Extrait de la chaîne entre deux chaînes de caractères en java
J'essaie d'obtenir de la chaîne entre <%= et %>, voici mon oeuvre:
String str = "ZZZZL <%= dsn %> AFFF <%= AFG %>";
Pattern pattern = Pattern.compile("<%=(.*?)%>");
String[] result = pattern.split(str);
System.out.println(Arrays.toString(result));
il de retour
[ZZZZL , AFFF ]
Mais mon attente est:
[ dsn , AFG ]
Où je suis mal et comment le corriger ?
- Il semble que vous êtes confus découpage d'une chaîne de filtrage.
Vous devez vous connecter pour publier un commentaire.
Votre modèle est fine. Mais vous ne devriez pas être
split()
ting loin, vous devriezfind()
il. Code suivant donne la sortie que vous recherchez:Pattern.DOTALL
pour ceux assez fréquent des cas, si l'on prévoit que le match s'étend sur plusieurs lignes.J'ai répondu à cette question ici:
https://stackoverflow.com/a/38238785/1773972
Utiliser
Ce requirs à l'aide de "Apache commons lang" de la bibliothèque:
https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.4
Cette bibliothèque dispose d'un grand nombre de méthodes utiles pour travailler avec de la ficelle, vous allez vraiment profiter de la découverte de cette bibliothèque dans d'autres domaines de votre code java !!!
Votre regex semble correct, mais vous êtes
splitting
avec elle au lieu dematching
avec elle. Vous voulez quelque chose comme ceci:Jlordo approche couvre la situation spécifique. Si vous essayez de créer une méthode abstraite en dehors de ça, vous pouvez faire face à une difficulté de vérifier si "
textFrom
"est avant"textTo
'. Sinon, la méthode peut retourner un match pour une autre occurrence de 'textFrom
' dans le texte.Ici est un prêt-à-go méthode abstraite qui couvre à cet inconvénient: