Un moyen facile de convertir regex à une regex compatible java?
J'ai une regex défini en Python/Ruby/PHP qui est comme ça
"(forumdisplay.php\?.*page=%CURRENTPAGE%)"
Quand je le fais pour Java, je double échapper à cette interrogation à \\?
Comme suit:
"(forumdisplay.php\\?.*page=%CURRENTPAGE%)";
Est-il une fonction que je peux utiliser pour faire cela automatiquement? Ou aurais-je besoin de changer tous mes regexes plus de travailler avec le moteur d'expressions régulières Java?
source d'informationauteur James
Vous devez vous connecter pour publier un commentaire.
Essayer cet outil en ligne: http://www.regexplanet.com/advanced/java/index.html
Il prend normale de votre expression régulière et des sorties compatible java, expression de chaîne. Me sauve des tonnes de temps de la conversion d'énormes chaînes regex moi-même.
Noter que pas toutes les expressions régulières en langage java. J'ai vu bizarre php validation de la regex que simplement se comporte différemment en java pattern matching.
Noter que c'est pas la Java moteur d'expression régulière qui nécessite le double barres obliques inverses, mais le Java compilateur. Lorsque vous écrivez le texte suivant dans le code source de Java:
le compilateur Java interprète cela comme la chaîne:
La Java moteur d'expression régulière puis fait exactement la même chose que les autres moteurs d'expressions régulières - le point d'interrogation (parce qu'il s'est échappé) est traité littéralement.
Une chose semblable se produit en Python - les deux chaînes ci-dessous sont identiques:
C'est à l'aide de l'Python
r
notation pour un "raw" de la chaîne où les barres obliques inverses ne sont pas interprétés par le compilateur.Personnellement, j'utilise Eclipse les EXCELLENTS plugins à partir du site http://www.bastian-bergerhoff.com/eclipse/features/
Vous y trouverez QuickREx pour l'expression régulière et aussi XPath développeur du plugin que j'utilise beaucoup.
Pour QuickREx, juste test d'expression régulière et appuyez sur le bouton pour copier sur votre active de l'éditeur avec la bonne échappe les caractères.
C'est un must, juste lui donner un essai.
Une bonne façon de commencer est généralement de faire un "rechercher remplacer tous les" de "\" par des "\\".
Vous n'êtes pas vraiment en train de faire un changement à faire ce travail avec le java moteur d'expressions régulières. Vous êtes juste avoir à traiter avec les douleurs de stocker une regex dans une Java String... on pourrait faire ça dans une fonction, mais qui aurait plus de code à maintenir. Je suggère de faire un rechercher remplacer comme décrit ci-dessus...