4 votes

Comment faire correspondre une chaîne de caractères contenant au moins un alphabet et un * en Regex ?

Je veux faire correspondre une chaîne de 2 à 4 caractères contenant au moins un alphabet et un * en utilisant une Regex.

Par exemple, la chaîne de test est la suivante :

124 adbaad aa1 efd f*ad *** af 848

(La syntaxe spéciale de l'entrée ne contiendra pas de mots similaires plus longs, par exemple abc*def)

Je veux correspondre f*ad dans la chaîne.

[a-z*]{2,4}

J'ai essayé la regex ci-dessus, mais une chaîne sans * correspondait également.

J'ai cherché sur Internet pendant deux jours mais je n'ai pas trouvé de solution.

Comment puis-je atteindre l'objectif ?

4voto

CertainPerformance Points 110949

Au début du motif, la recherche porte sur 0 à 3 caractères alphabétiques suivis d'un signe * et aussi des prévisions pour 0-3 * s suivi d'un caractère alphabétique. Cela garantit que la correspondance commence à un point suivi d'au moins un caractère alphabétique et d'au moins un caractère * dans les 4 caractères suivants. Ensuite, faites correspondre [a-z*]{2,4} :

(?=[a-z]{0,3}\*)(?=\*{0,3}[a-z])[a-z*]{2,4}

https://regex101.com/r/90A8rY/1

La question n'est pas claire, mais si vous souhaitez uniquement faire correspondre des mots isolés, recherchez un espace (ou le bord de la chaîne) au début et à la fin du motif :

(?<= |^)(?=[a-z]{0,3}\*)(?=\*{0,3}[a-z])[a-z*]{2,4}(?= |$)
^^^^^^^^                                           ^^^^^^^

https://regex101.com/r/90A8rY/3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X