/ / javascript regex remplace ne fonctionne pas dans apache camel - javascript, apache-camel, dsl

regex javascript remplacer ne fonctionne pas dans apache camel - javascript, apache-camel, dsl

J'utilise apache camel 2.11 et camel-script 2.2 pour la prise en charge de javascript avec spring DSL.

Je voulais faire un regex remplacer avec des groupes, mais cela ne semble pas fonctionner dans camel.

Ex: - dans une transformation, les œuvres suivantes

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

i.e changez YZ en XZ

Mais ce qui suit ne le fait pas:

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

c'est à dire. Changer YZXXX en Y

J'ai testé la regex elle-même à https://regex101.com/, donc je ne crois pas que ce soit un problème de syntaxe dans la regex elle-même

Maintenant, il est possible que camel-script n'offre qu'une prise en charge javascript partielle. mais je ne suis pas sûr que ce soit le cas. des idées?

Réponses:

1 pour la réponse № 1

J'ai trouvé le problème :-)

Le problème est le suivant: - Je supposais que le javascript de Camel peut utiliser des fonctions javascript ... alors qu'en fait, il appelle des fonctions java.

La modification du code en syntaxe java (en appelant la fonction replaceAll () avec la syntaxe java pour regex) a résolu le problème.


0 pour la réponse № 2

Vous devez utiliser un regex, pas une chaîne ne ressemble à une regex. Comparer:

Faux:

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

Correct:

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

Cela étant dit, la barre oblique inverse de votre modèle de remplacement est superflue. "$1" serait correct.