使用正则表达式(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,而不是变量或属性。如果可能的话。
答案 0 :(得分:15)
答案 1 :(得分:3)
你想要做的是贪婪匹配,模式的最长匹配,通常是默认匹配,但匹配到'/'的最后一个实例。
这将是这样的:
.*\/
说明:
. 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
答案 2 :(得分:2)
选项1
^.*/
Empty string
*
量词是贪婪的,^.*/
将从行的开头到最后一个斜杠匹配。因此,您可以直接用空字符串替换它,并留下您想要的文本。选项2
^.*/(.*)
$1
或\1
,不确定Ant)^.*/
与最后一个斜杠匹配。然后,您使用(.*)
将该行的结尾捕获到第1组,并将整个匹配替换为第1组。