2014-03-05 32 views
0

我想更换蚂蚁用省略号代替

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

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

可以在任何一个建议我模式的选择呢?

我曾尝试:

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

但它不工作

回答

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/置于两个字符串之间以获得正确的结果。

+0

感谢百万人的快速帮助 – user3384223

0

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

ora\:processXSLT\(' 

Regular expression visualization

Debuggex Demo

你的目标应该是

ora:processXSLT('xsd/ 

如果正确理解你的问题,这是一个简单的字面字面更换。所以不需要群组处理。