Maison > Java > javaDidacticiel > Comment puis-je créer des expressions régulières compatibles Unicode en Java ?

Comment puis-je créer des expressions régulières compatibles Unicode en Java ?

Barbara Streisand
Libérer: 2024-12-26 03:41:08
original
178 Les gens l'ont consulté

How Can I Create Unicode-Aware Regular Expressions in Java?

Équivalents Unicode pour w et b dans les expressions régulières Java

L'implémentation des expressions régulières de Java n'utilise pas les raccourcis de classe de caractères w pour "n'importe quelle lettre , chiffre ou ponctuation de connexion" comme le font d'autres implémentations. Cela rend la correspondance des mots Unicode plus difficile. Le problème s'étend au séparateur de mots b, qui présente également un comportement incohérent en Java.

Équivalents compatibles Unicode

Pour résoudre ces problèmes, on peut réécrire un modèle d'expression régulière. en utilisant les remplacements suivants :

  • w : [pLpMp{Nd}p{Nl}p{Pc}[p{InEnclosedAlphanumerics}&&p{So}]]
  • b : (?:(?<=[pLpMp{Nd}p{Nl}p{Pc}[p{InEnclosedAlphanumerics}&&p{So}]])(?![pLpMp{Nd}p{Nl}p{Pc}[ p{InEnclosedAlphanumerics}&&p{So}]])|(?

Autre Propriétés Unicode

En plus de w et b, les expressions rationnelles Java ne prennent pas en charge Unicode pour d'autres propriétés. Cependant, ces propriétés peuvent être étendues en utilisant la syntaxe p, comme indiqué ci-dessous :

Java Syntax Unicode Property
p{Lower} Unicode Lowercase
p{Upper} Unicode Uppercase
p{ASCII} ASCII
p{Alpha} Unicode Alphabetic
p{Digit} Unicode Digit
p{Alnum} Unicode Alphanumeric
p{Punct} Unicode Punctuation
p{Graph} Unicode Graph
p{Print} Unicode Printable
p{Blank} Unicode Blank
p{Cntrl} Unicode Control
p{XDigit} Unicode Hexadecimal Digit
p{Space} Unicode Space

Unicode-Aware Regex

En incorporant ces substituts compatibles Unicode, on peut créer des modèles d'expressions régulières qui gèrent les données Unicode avec précision. Par exemple, le modèle suivant correspond aux mots Unicode :

Pattern pattern = Pattern.compile("\w+"); // Unicode-aware \w equivalent
Copier après la connexion

Ce modèle peut être utilisé pour faire correspondre des mots dans des chaînes de texte, que les caractères soient codés en ASCII ou en Unicode.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal