/ / javascript regex ersetzen funktioniert nicht in Apache Kamel - Javascript, Apache-Kamel, dsl

Javascript Regex ersetzen nicht funktioniert in Apache Kamel - Javascript, Apache-Kamel, DSL

Ich benutze Apache Camel 2.11 und Camel-Script 2.2 für Javascript-Unterstützung mit Feder-DSL.

Ich wollte einen Regex mit Gruppen ersetzen, aber das scheint bei Camel nicht zu funktionieren.

ZB: - In einer Transformation funktioniert das Folgende

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

d. ändern Sie YZ zu XZ

Aber das Folgende nicht: -

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

dh. Ändere YZXXX zu Y

Ich habe die Regex selbst getestet https://regex101.com/Also glaube ich nicht, dass es ein Syntaxproblem in der Regex selbst ist

Nun ist es möglich, dass camel-script nur teilweise Javascript-Unterstützung bietet. aber ich bin mir nicht sicher, ob das der Fall ist. irgendwelche Ideen?

Antworten:

1 für die Antwort № 1

Ich habe das Problem gefunden :-)

Das Problem ist: - Ich ging davon aus, dass Camel Javascript JavaScript-Funktionen verwenden kann, wenn es tatsächlich Java-Funktionen aufruft.

Das Ändern des Codes in die Java-Syntax (Aufruf der Funktion replaceAll () mit Java-Syntax für Regex) behob das Problem.


0 für die Antwort № 2

Sie müssen ein verwenden Regex, keine Zeichenfolge sieht wie eine Regex aus. Vergleichen:

Falsch:

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

Richtig:

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

Der umgekehrte Schrägstrich in Ihrem Ersetzen-Muster ist überflüssig. "$1" wäre richtig.