2016-09-29 3 views
0

Я использую apache camel 2.11 и верблюд-скрипт 2.2 для поддержки javascript с пружинным DSL.javascript regex заменить не работает в apache camel

Я хотел бы заменить регулярное выражение на группы, но это не работает на верблюде.

Например: - в преобразование, следующие работы

<javaScript>request.body.toString().replace("Y","X")</javaScript> 

Изменение YZ т.е. к XZ

Но следующий не будет: -

<javaScript>request.body.toString().replace("/(Y)(.*)$/g","\$1")</javaScript> 

т.е.. Изменение YZXXX в Y

я испытал сам регулярное выражение в https://regex101.com/, поэтому я не считаю, сво вопрос синтаксиса в самом

Теперь регулярное выражение может быть возможно, что верблюд-скрипт предлагает только частичную поддержку яваскрипта. но я не уверен, что так. есть идеи?

ответ

0

Вам необходимо использовать регулярное выражение , а не строку, похожую на регулярное выражение. Сравните:

Неправильно:

request.body.toString().replace("/(Y)(.*)$/g","\$1") 

Правильно:

request.body.toString().replace(/(Y)(.*)$/g, "\$1") 

Это, как говорится, обратная косая черта в вашем заменить шаблон является излишним. "$1" будет правильным.

+0

Нет. Я пробовал это и перед публикацией .. но спасибо! – Shahed

+0

Возможно, вы пробовали это раньше, но, насколько JS идет, первая строка кода не работает, вторая делает. – Tomalak

1

Я нашел этот вопрос :-)

Вопрос заключается в: - Я предполагал, что верблюд Javascript может использовать функции JavaScript ... когда на самом деле вызывает функцию Java.

Изменение кода на java-синтаксис (вызов функции replaceAll() с помощью синтаксиса java для регулярного выражения) решила проблему.

+0

[Верблюд поддерживает JavaScript] (http://camel.apache.org/javascript.html), а код внутри элемента '' фактически * есть * JS. Поэтому я немного сомневаюсь в правильности вашего решения. – Tomalak

+0

Ну, это работает для меня, и javascript действительно позволяет вызывать java-функции .. так что это может быть проблема с тем, как я назвал функции javascript, или ограничение, когда javascript используется с Spring DSL, возможно? В любом случае, я сделаю еще один тест, попробовав вызвать внешние простые функции Native javascript, чтобы увидеть, работают ли они. – Shahed

+0

Хорошо, это может быть связано с тем, что объект request.body является java-объектом, а не объектом javascript ... – Shahed