Maison  >  Article  >  Java  >  Comment diviser des chaînes avec des délimiteurs à l’aide de Lookahead et Lookbehind ?

Comment diviser des chaînes avec des délimiteurs à l’aide de Lookahead et Lookbehind ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-25 04:23:02388parcourir

How to Split Strings with Delimiters Using Lookahead and Lookbehind?

Diviser des chaînes avec des délimiteurs à l'aide de Lookahead et Lookbehind

Une tâche courante en programmation consiste à diviser une chaîne en fonction de délimiteurs spécifiques. Cependant, la méthode String.split() par défaut fournit uniquement le texte fractionné, à l'exclusion des délimiteurs. Dans les scénarios où conserver les délimiteurs est crucial, des approches alternatives sont nécessaires.

L'anticipation et l'analyse derrière sont des fonctionnalités des expressions régulières qui permettent d'identifier des modèles sans réellement les faire correspondre. En tirant parti de ces fonctionnalités, nous pouvons diviser une chaîne tout en préservant les délimiteurs.

Approche Regex :

<code class="java">String sentence = "(Text1)(DelimiterA)(Text2)(DelimiterC)(Text3)(DelimiterB)(Text4)";
String[] splitResult = sentence.split("((?=;)|(?<=;))");</code>

Interprétation :

Cette expression régulière comprend :

  • (?=;) : analyse anticipée positive pour faire correspondre une chaîne vide avant un point-virgule (;).
  • (?<=;) : positif lookbehind pour faire correspondre une chaîne vide après un point-virgule (;).
  • ((?=;)|(?<=;)) : combine l'analyse anticipée et l'analyse ultérieure, garantissant qu'un point-virgule existe avant ou après le point de partage.

En utilisant cette regex, le splitResult contiendra les éléments suivants :

[Text1, ;, Text2, ;, Text3, ;, Text4]

Conclusion :

Lookahead et lookbehind permettent une manipulation avancée des chaînes en permettant l'identification de modèles sans les faire correspondre directement. Cette approche offre un moyen polyvalent de diviser des chaînes en fonction de délimiteurs tout en conservant leur structure d'origine.

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