使用正则表达式替换每个没有前缀的后缀
Replace each suffix not preceded by prefix using regexp
我需要将所有后缀 "SJD" 替换为前缀 "/" 到 [=25] 的正则表达式=]"OZPS"(并且它必须与 ant builder 一起使用)。
我从 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">
我试过否定后视断言,但它似乎不起作用。
编辑:
对每个使用在线正则表达式测试器的人的简短解释。由于 java 脚本正则表达式引擎,它们中的大多数不支持否定后向断言。与 JS 不同,java 引擎似乎支持 NLA 所以如果你测试表达式的专用 java 我建议使用这个 https://regex101.com
您可以这样尝试:(?<!\/)SJD
.
有可用示例 here。
编辑:查看 this 问题,您似乎可以这样做:
<replaceregex pattern="(?<!\/)SJD" replace="OZPS"
flags="gis" byline="false"/>
编辑:根据@Piotr 的建议,<
将需要替换为 <
以将其从 XML 文件的其余部分转义。
我需要将所有后缀 "SJD" 替换为前缀 "/" 到 [=25] 的正则表达式=]"OZPS"(并且它必须与 ant builder 一起使用)。
我从 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">
我试过否定后视断言,但它似乎不起作用。
编辑: 对每个使用在线正则表达式测试器的人的简短解释。由于 java 脚本正则表达式引擎,它们中的大多数不支持否定后向断言。与 JS 不同,java 引擎似乎支持 NLA 所以如果你测试表达式的专用 java 我建议使用这个 https://regex101.com
您可以这样尝试:(?<!\/)SJD
.
有可用示例 here。
编辑:查看 this 问题,您似乎可以这样做:
<replaceregex pattern="(?<!\/)SJD" replace="OZPS"
flags="gis" byline="false"/>
编辑:根据@Piotr 的建议,<
将需要替换为 <
以将其从 XML 文件的其余部分转义。