Maison >Java >javaDidacticiel >Comment puis-je extraire le texte suivant une correspondance Regex sans inclure le texte correspondant ?

Comment puis-je extraire le texte suivant une correspondance Regex sans inclure le texte correspondant ?

DDD
DDDoriginal
2024-11-07 09:51:03907parcourir

How Can I Extract Text Following a Regex Match Without Including the Matching Text?

Rechercher du texte suite à une correspondance Regex

Vous vous êtes aventuré dans le domaine des Regex et avez rencontré un besoin spécifique : extraire du texte qui réussit une match spécifique sans inclure le match lui-même. Explorons comment cela peut être réalisé.

Dans le code que vous avez fourni, le modèle initial "phrase(.*)" correspond avec précision à "phrase", mais il capture également le texte suivant, ce qui donne "une phrase géniale". ". Pour isoler uniquement le texte suivant, nous utiliserons une technique appelée « assertion positive d'apparence ».

Assertion d'apparence positive

Une assertion d'apparence positive (?<= phrase) correspond à un emplacement dans la chaîne immédiatement après le texte spécifié (« phrase ») sans l'incorporer dans la correspondance. En utilisant cette assertion, nous pouvons créer un nouveau modèle :

(?<=sentence).*

Implémentation Java

Pour implémenter cela en Java, modifiez votre code comme suit :

import java.util.regex.*;

public class RegexPostMatch {
    public static void main(String[] args) {
        String example = "Some lame sentence that is awesome";
        Pattern pattern = Pattern.compile("(?<=sentence).*");

        Matcher matcher = pattern.matcher(example);

        if (matcher.find()) {
            System.out.println("Text after 'sentence': " + matcher.group());
        } else {
            System.out.println("No match found");
        }
    }
}

Ce code révisé produira le résultat souhaité : "c'est génial."

Notes supplémentaires

En Java, les assertions positives d'analyse sont limitées à sous-expressions de longueur finie. Cela signifie que des modèles tels que "(?<=sentences*)" ne fonctionneront pas. Envisagez plutôt d'utiliser des alternatives telles que :

(?<=sentence\s+|\W+sentence)

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