2014-03-05 53 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/ 

如果正確理解你的問題,這是一個簡單的字面字面更換。所以不需要羣組處理。