Chaîne Java – tout ce qui est compris entre deux expressions régulières (à l’exclusion de).

En Java, existe-t-il un moyen simple d’extraire une sous-chaîne en spécifiant les délimiteurs d’expression régulière de chaque côté, sans inclure les délimiteurs dans la sous-chaîne finale?

Par exemple, si j’ai une chaîne comme celle-ci:

Header text 

Quel est le moyen le plus simple d’extraire la sous-chaîne:

 Header text 

Veuillez noter que la sous-chaîne peut contenir des sauts de ligne …

Merci!

Ecrivez une regex comme ceci:

 "(regex1)(.*)(regex2)" 

… et extrayez le groupe central de la masortingce (pour gérer les nouvelles lignes de votre modèle, utilisez Pattern.DOTALL ).

En utilisant votre exemple, nous pouvons écrire un programme comme:

 package test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Regex { public static void main(Ssortingng[] args) { Pattern p = Pattern.comstack( "(.*)", Pattern.DOTALL ); Matcher matcher = p.matcher( "Header\n\n\ntext" ); if(matcher.matches()){ System.out.println(matcher.group(1)); } } } 

Qui quand exécuter imprime:

 Header text 

Vous ne devez pas utiliser d’expressions régulières pour décoder le code XML. Cela finira par se rompre si l’entrée n’est pas ssortingctement contrôlée.

Le plus simple est probablement d’parsingr le code XML dans une arborescence DOM (Java 1.4 et les versions ultérieures contiennent directement un parsingur XML), puis de naviguer dans l’arborescence pour choisir ce dont vous avez besoin.

Peut-être voudriez-vous dire ce que vous voulez accomplir avec votre programme?