使用正则表达式(Ant中的replaceregexp)我如何匹配(然后替换)从一行开始的所有内容,直到并包括斜杠的最后一次出现?
我需要的是从以下任意一个开始:
. ./. ./replace_this keep_this
. ./replace_this/replace_this Keep_this
/. ./. ./replace_this/replace_this Keep_this
并把它们变成这样:
what_I_addedKeep_this
看起来应该很简单,但我不明白。我已经编写了正则表达式,它将识别最后一个斜杠并从那里匹配到行尾,但是我需要的是一个将匹配从行首到最后一个斜杠的所有内容的正则表达式,因此我可以全部替换它。
这是一个Ant构建文件,它读取一堆.txt文件并转换它在其中找到的任何链接。我只是想使用replaceregexp,而不是变量或属性。如果可能的话。
你可以匹配这个:
.*/
并替换为您的文本
您要做的是贪婪匹配,模式的最长可能匹配,它通常是默认的,但匹配直到'/'的最后一个实例。
就像这样:
.*/
解释:
. any character
* any and all characters after that (greedy)
/ the slash escaped, this will stop at the **last** instance of '/'
您可以在这里看到它的作用:http://regex101.com/r/pI4lR5
选项1
- Search:
^.*/
- 代替:
Empty string
- 因为
*
限定词是贪婪的,所以^.*/
将从行开始匹配到最后一个斜杠。所以你可以直接用空字符串替换它,这样你就只剩下你想要的文本了。
选项2
- 搜索:
^.*/(.*)
- Replace:第1组(通常,语法将是
$1
或1
,不确定Ant) - 同样,
^.*/
匹配最后一个斜杠。然后用(.*)
捕获到第1组的线的末尾,并用第1组替换整个匹配。 - 在我看来,没有理由选择这个选项,但了解它是很好的。