我正在使用apache camel 2.11和camel-script 2.2来支持spring DSL。
我想用群组进行正则表达式替换,但这似乎不适用于驼峰。
例如: - 在转换中,以下工作
<javaScript>request.body.toString().replace("Y","X")</javaScript>
即将YZ改为XZ
但以下情况并非如此: -
<javaScript>request.body.toString().replace("/(Y)(.*)$/g","\$1")</javaScript>
即。将YZXXX更改为Y
我已经在https://regex101.com/测试了正则表达式本身,所以我不相信它在正则表达式本身的语法问题
现在有可能camel-script只提供部分javascript支持。但我不确定是不是这样。任何想法?
答案 0 :(得分:1)
我发现了这个问题: - )
问题是: - 我假设Camel javascript可以使用javascript函数......实际上它调用java函数。
将代码更改为java语法(使用regex的java语法调用replaceAll()函数)解决了这个问题。
答案 1 :(得分:0)
您需要使用正则表达式,而不是字符串看起来像正则表达式。比较:
错:
request.body.toString().replace("/(Y)(.*)$/g","\$1")
正确:
request.body.toString().replace(/(Y)(.*)$/g, "\$1")
话虽如此,替换模式中的反斜杠是多余的。 "$1"
是正确的。