Regular Expressions
Frontière de mot
Recherche…
Syntaxe
- Style POSIX, fin du mot:
[[:>:]]
- Style POSIX, début du mot:
[[:<:]]
- Style POSIX, limite de mot:
[[:<:][:>:]]
- SVR4 / GNU, fin du mot:
\>
- SVR4 / GNU, début du mot:
\<
- Perl / GNU, limite de mot:
\b
- Tcl, fin de mot:
\M
- Tcl, début du mot:
\m
- Tcl, limite de mot:
\y
- Portable ERE, début du mot:
(^|[^[:alnum:]_])
- Portable ERE, fin du mot:
([^[:alnum:]_]|$)
Remarques
Match mot complet
\bfoo\b
correspondra au mot complet sans alphanumérique et _
précédant ou suivant par lui.
Prenant de regularexpression.info
Il y a trois positions différentes qui qualifient de limites de mots:
- Avant le premier caractère de la chaîne, si le premier caractère est un caractère de mot.
- Après le dernier caractère de la chaîne, si le dernier caractère est un caractère de mot.
- Entre deux caractères dans la chaîne, l’un est un caractère de mot et l’autre n’est pas un caractère de mot.
Le terme caractère de mot signifie ici l'un des suivants
- Alphabet (
[a-zA-Z]
) - Nombre (
[0-9]
) - Souligner
_
En bref, mot caractère = \w
= [a-zA-Z0-9_]
Rechercher des motifs au début ou à la fin d'un mot
Examinez les chaînes suivantes:
foobarfoo
bar
foobar
barfoo
- la
bar
expression régulière correspondra aux quatre chaînes, -
\bbar\b
ne fera que correspondre à la 2ème, -
bar\b
sera capable de faire correspondre les 2ème et 3ème chaînes, et -
\bbar
correspondra aux 2ème et 4ème chaînes.
Limites de mots
Le métacaractère \b
Pour faciliter la recherche de mots entiers, nous pouvons utiliser le métacaractère \b
. Il marque le début et la fin d'une séquence alphanumérique *. En outre, comme il ne sert qu'à marquer ces emplacements, il ne correspond en réalité à aucun caractère.
*: Il est courant d'appeler une séquence alphanumérique par un mot, puisque nous pouvons capturer ses caractères avec un \w
(la classe des caractères du mot). Cela peut être trompeur, car \w
inclut également des nombres et, dans la plupart des cas, le trait de soulignement.
Exemples:
Regex | Contribution | Allumettes? |
---|---|---|
\bstack\b | stackoverflow | Non , car il n'y a pas d'occurrence de la stack mots entière |
\bstack\b | foo stack bar | Oui , car il n'y a rien avant ou après la stack |
\bstack\b | stack!overflow | Oui, il n'y a rien avant la stack et ! n'est pas un caractère de mot |
\bstack | stackoverflow | Oui , car il n'y a rien avant la stack |
overflow\b | stackoverflow | Oui , car il n'y a rien après le overflow |
Le métacaractère \B
Ceci est l'opposé de \b
, correspondant à l'emplacement de chaque caractère non-frontière. Comme \b
, puisqu'il correspond aux emplacements, il ne correspond à aucun caractère. C'est utile pour trouver des mots non entiers.
Exemples:
Regex | Contribution | Allumettes? |
---|---|---|
\Bb\B | abc | Oui , puisque b n'est pas entouré de limites de mots. |
\Ba\B | abc | Non , a a une limite de mot sur son côté gauche. |
a\B | abc | Oui , a n'a pas de limite de mot sur son côté droit. |
\B,\B | a,,,b | Oui , il correspond à la deuxième virgule car \B correspondra également à l'espace entre deux caractères non-mots (il convient de noter qu'il existe une limite de mots à gauche de la première virgule et à droite du second). |
Rendez le texte plus court mais ne brisez pas le dernier mot
Pour créer un texte long avec le maximum de N caractères mais laisser le dernier mot intact, utilisez le pattern .{0,N}\b
:
^(.{0,N})\b.*