使用regexp替换前缀不带前缀的每个后缀

时间:2015-03-10 16:00:52

标签: regex ant

我需要正则表达式,将所有后缀“SJD”替换为“/”前缀“OZPS”(并且必须与蚂蚁建设者合作。)

我从我的xml文件中删除了几行代码,其中包含示例:

输入:

<replaceregexp flags="g" match="SJD" replace="OZPS" file="../ozps/build.xml"/>
<replaceregexp flags='g' match='"\/CAS\/SJD"' replace='"/CAS/OZPS"'>
<replaceregexp flags="g" match="SJD" replace="OZPS">

预期产出:

<replaceregexp flags="g" match="OZPS" replace="OZPS" file="../ozps/build.xml"/>
<replaceregexp flags='g' match='"\/CAS\/SJD"' replace='"/CAS/OZPS"'>
<replaceregexp flags="g" match="OZPS" replace="OZPS">

我试过负面的lookbehind断言buit似乎不起作用。

编辑: 每个使用在线正则表达式测试人员的小解释。由于java脚本regexp引擎,他们中的大多数不支持负面的lookbehind断言。与JS不同,java引擎似乎支持NLA所以如果你测试表达式专用于java我建议使用这个https://regex101.com

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:(?<!\/)SJD

有一个例子here

编辑:看看this问题,您似乎可以这样做:

<replaceregex pattern="(?&lt;!\/)SJD" replace="OZPS"
    flags="gis" byline="false"/>

编辑:<需要被&lt;替换,以便根据@ Piotr的建议将其从XML文件的其余部分中删除。