/ / javascript regex replace nie działa w apache camel - javascript, apache-camel, dsl

zastąpienie regex javascript nie działa w apache camel - javascript, apache-camel, dsl

Używam Apache Camel 2.11 i Camel-Script 2.2 do obsługi javascript ze sprężynowym DSL.

Chciałem zrobić regex zastępując grupy, ale to nie działa na wielbłądach.

Np .: - w transformacji następujące prace

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

tj. Zmień YZ na XZ

Ale następujące nie: -

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

to znaczy. Zmień YZXXX na Y

Przetestowałem sam regex na https://regex101.com/, więc nie sądzę, że jest to problem składniowy w samym regex

Możliwe, że skrypt wielbłądowy oferuje jedynie częściową obsługę javascript. ale nie jestem pewien, czy tak jest. jakieś pomysły?

Odpowiedzi:

1 dla odpowiedzi № 1

Znalazłem problem :-)

Problem polega na tym, że: - Przyjąłem, że javascript Camel może korzystać z funkcji javascript ... podczas gdy w rzeczywistości wywołuje funkcje java.

Zmiana kodu na składnię języka Java (wywołanie funkcji replaceAll () za pomocą składni Java dla regex) rozwiązała problem.


0 dla odpowiedzi nr 2

Musisz użyć a regex, łańcuch nie wygląda jak regex. Porównać:

Źle:

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

Poprawny:

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

W związku z tym odwrotny ukośnik w schemacie zastępowania jest zbędny. "$1" byłby poprawny.