2017-03-24 1 views
5

Supposons que j'ai le sujet suivant:capture avec un regard négatif derrière

abcdef ghidef 

et je veux correspondre mot se terminant par définition non par abc précédé (dans ce cas, il serait ghidef). Comment puis-je faire correspondre cela?

Quand j'utilise:

(?<!abc)def 

Je reçois le 2ème def mais je ne reçois pas ghi ici.

+0

[* "Une assertion est un test sur les caractères suivant ou précédant le courant point correspondant qui ** ne consomme pas réellement de caractères. ** "* * (http://php.net/manual/fr/regexp.reference.assertions.php) – Rizier123

+0

Votre question est très floue: vous auriez dû vous dire doivent correspondre à des mots qui ne commencent pas par 'abc' et qui se terminent par' def'. –

Répondre

3

Pas besoin de lookbehind. Vous pouvez utiliser un test avant négatif:

\b(?!abc)\w*def\b 

RegEx Demo

RegEx Breakup:

  • \b - Affirmer une limite de mot
  • (?!abc) - est préanalyse négative qui affirme un mot doesn ne commence pas par abc après \b (limite de mot)
  • \w* - Match 0 ou plusieurs caractères mot
  • def - texte de fin de mot est def
  • \b - limite de mot
+1

Merci beaucoup. C'est ce que j'ai essayé de réaliser :) –