2010-04-25 10 views

cevap

32

bu deneyin:

<(?!a|em|strong) 
+0

+1 Bunun Perl uyumlu regexp sözdizimi için geçerli olduğunu düşünüyorum. (Diğer sözdizimleri için, bu farklı olabilir) –

+0

Denedim ve iyi çalışıyor, teşekkürler – Kyle

+1

Sadece birisi ilgilendiğinde, “?!” Negatif bir görünüm başlatır. Http://www.rexegg.com/regex-lookarounds.html – schnatterer

7

Bir negative lookahead kullanmak için en basit formu (bu sorun için) 'dir:

<(?!a|em|strong) 

Bununla ilgili bir sorun, <applet> görmezden gelmesidir. Bununla başa çıkmanın bir yolu, sıfır kelimelik bir ifade olan (yani girdinin hiçbirisini yakalamayan) bir kelime ile sözcük olmayan veya sözcük olmayan sözcük geçişi ile eşleşen bir \b kullanmaktır. Kelime karakterleri [0-9a-zA-Z_]'dur. Yani: En regex motoru destekliyorsa

<(?!(a|em|strong)\b) 
2

, bir negatif ileri yönlü onaylama işlemi kullanın: Bu dizede ileri bakar ve bu maç olmaz eğer başarılı; Ancak, herhangi bir girdi tüketmez. Böylece, /<(?!(?:a|em|strong)\b)/: < ile eşleşirsiniz, ardından a, em, veya strong ve ardından \b sözcük aralığının ardından başarılı olmazsınız.

+0

Gözden geçirmenin iyi bir genel görünümünü burada buldum. –

2

Andrew'un cevabı açıkça üstün olmasına rağmen, daha önce [^(?:a|em|strong)] ile çalıştım.

İlgili konular