我想替换
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>
但它不起作用
答案 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\('
你的目标应该是
ora:processXSLT('xsd/
如果理解你的问题,这是一个简单的字面替换文字。所以不需要进行组处理。