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 № 1Ich 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.