2010-06-09 6 views

Répondre

6

C'est parce que .{0,1000} correspondra à la totalité du sujet, d'où il n'est pas suivie xa7 ou paragraf (suivi par $ seulement).

Vous voulez lookbehind négatif:

.{0,1000}(?<!xa7|paragraf)$ 
+0

Ok Merci, par curiosité serait-il possible de changer pour utiliser lookahead négatif? – user254694

+0

@ Bryan-Rasmussen J'ai d'abord essayé de trouver quelque chose avec lookahead négatif, sans succès. – Artefacto

3

Il est une erreur commune à égarez affirmations. Si vous souhaitez utiliser préanalyse, le motif est quelque chose comme ceci:

^(?!.*paragraph$).*$ 

Cela correspond (as seen on rubular.com):

something something para 
paragraph something something 

Mais ne correspond pas:

something paragraph 

Donc, la clé différence ici est que nous commençons à regarder en avant au début de la chaîne, avant que nous correspondons .* (ou .{0,1000} dans votre cas). Bien sûr, ce que nous cherchons n'est pas simplement paragraph$, mais plutôt .*paragraph$. Cela dit, pour vérifier qu'une chaîne ne se termine pas par quelque chose de longueur finie, lookbehind, lorsqu'elle est supportée, est la solution la plus naturelle.

^.*$(?<!paragraph) 
+0

+1 gentil, cela ne m'est pas venu à l'esprit. – Artefacto