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 № 1Znalazł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.