2 votes

PHP regex - correspond à tout mais pas exactement à un ou plusieurs mots

J'essaie de trouver une chaîne de caractères qui n'est pas exactement un ou plusieurs mots.

Mon modèle

(?!(^ignoreme$)|(^ignoreme2$))

Je suis à la recherche de

ignoreme   - no
ignoreme2  - no
ignoremex  - match
ignorem    - match
gnoreme    - match
ignoreme22 - match

Mais elle renvoie beaucoup d'espace. Comment le faire, merci. https://regex101.com/r/u4EsNv/1

6voto

anubhava Points 172509

Vous pouvez utiliser cette regex corrigée :

^(?!ignoreme2?$).*$

Démo RegEx mise à jour

Détails du RegEx :

  • ^ : Début
  • (?!ignoreme2?$) : Lookahead négatif pour échouer la correspondance lorsque nous avons ignoreme o ignoreme2 jusqu'à la fin.
  • .* : Match 0 plus de n'importe quel caractère
  • $ : Fin

Notez que les regex (?!(^ignoreme$)|(^ignoreme2$)) ^ dans les expressions négatives de lookahead, pas à l'extérieur. Cela fait que le moteur de regex commence à correspondre après le 1er caractère pour satisfaire les assertions de lookahead. (Vous pouvez voir cela dans les correspondances surlignées de la regex101)

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