Maison >Java >javaDidacticiel >Comment puis-je utiliser Regex en Java pour faire correspondre des modèles uniquement lorsqu'ils ne sont pas précédés de caractères spécifiques ?

Comment puis-je utiliser Regex en Java pour faire correspondre des modèles uniquement lorsqu'ils ne sont pas précédés de caractères spécifiques ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-29 22:46:11731parcourir

How Can I Use Regex in Java to Match Patterns Only When Not Preceded by Specific Characters?

Correspondance de modèles non précédés de caractères spécifiques à l'aide de Regex

En Java, les expressions régulières offrent un moyen puissant de faire correspondre des modèles dans des chaînes. Parfois, vous devrez peut-être faire correspondre un motif uniquement s'il n'est pas précédé de certains caractères. En tirant parti du lookbehind négatif, l'expression régulière vous permet d'y parvenir.

Problème :

Considérez la chaîne suivante :

String s = "foobar barbar beachbar crowbar bar ";

Nous souhaitons faire correspondre toutes les occurrences de « bar » qui ne sont pas immédiatement précédées de « foo ». Le résultat souhaité serait :

barbar
beachbar
crowbar
bar

Solution :

Pour accomplir cette tâche, nous pouvons utiliser le modèle d'expression régulière suivant :

\w*(?<!foo)bar

Décomposer le modèle :

  • w* correspond à n'importe quel nombre de caractères de mot (lettres, chiffres ou traits de soulignement) avant la correspondance potentielle. Cette partie capture des caractères comme "plage" dans "beachbar".
  • (?

En utilisant ce modèle, nous pouvons réussir à faire correspondre les occurrences de "bar" qui ne sont pas précédées de "foo". Le résultat reflétera le résultat souhaité.

Remarques supplémentaires :

  • Pour plus d'informations sur le lookbehind négatif des regex, reportez-vous à « Expressions régulières – Lookaround ».
  • La partie w* a été ajoutée plus tard pour capturer les caractères avant le motif (par exemple, « plage » dans "bar de plage").

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn