蚂蚁用撇号代替

时间:2014-03-05 15:38:45

标签: regex search ant replace apostrophe

我想替换

from expression="ora:processXSLT('Transformation_1.xsl',bpws:getVariableData('inputVariable','payload'))

from expression="ora:processXSLT('xsd/Transformation_1.xsl',bpws:getVariableData('inputVariable','payload'))

有人可以建议我选择模式a吗?

我试过了:

<replaceregexp  flags="g">
    <regexp pattern="ora:processXSLT("/>
        <substitution expression="ora:processXSLT('xsd\1)"/> 
    <fileset dir="${fmw.prop}" includes="*"/>
</replaceregexp>

但它不起作用

2 个答案:

答案 0 :(得分:1)

<replaceregexp  flags="g">
    <regexp pattern="([^']+')(.*)"/>
        <substitution expression="\1xsd/\2)"/> 
    <fileset dir="${fmw.prop}" includes="*"/>
</replaceregexp>

在你的正则表达式中,你滥用\1。编写正则表达式时,会捕获括号中的所有内容,然后可以使用\1重新注入。如果有更多括号组,则可以使用\2\3等重新注入其内容。这意味着当你想匹配一个真正的括号时,例如(中的ora:processXSLT(,你需要像\(一样逃避它。这样它就不会成为捕获括号,而是被整合到匹配模式中。

此外,您需要捕获并重新输入您希望在最终替换中拥有的所有内容,因此您需要匹配整个字符串,进行修改并返回新形成的字符串。这就是为什么我们将ora:processXSLT('[^']+'匹配,将Transformation_1.xsl',bpws:getVariableData('inputVariable','payload'))(.*)匹配,并在两个字符串之间放置xsd/以获得正确的结果。

答案 1 :(得分:0)

您应该转义所有正则表达式控制字符。因此,您的模式应该是这样的:

ora\:processXSLT\('

Regular expression visualization

Debuggex Demo

你的目标应该是

ora:processXSLT('xsd/

如果理解你的问题,这是一个简单的字面替换文字。所以不需要进行组处理。