Bir Alt-desen hariç şey eşleştir

oy
2

Ben düzenli ifade yapmaya çalışır (ben inanıyorum geçersiz) bu ne başarmak istiyorum:

<p><a>([^(<\/a>)]+?)<\/a></p>uniquestring

Esasen bir kapanış bağlantı etiketi dışında bir şey uyuyor. '`Uniquestring çok iyi bir uzak kapanış çapa etiketinden sonra olabileceğinden burada yardımcı olmuyor Basit olmayan açgözlü:

<p><a>text I don't <tag>want</tag> to match</a></p>random 
data<p><a>text I do <tag>want to</tag> match</a></p>uniquestring more
matches <p><a>of <tag>text I do</tag> want to match</a></p>uniquestring 

Bu yüzden çapa etiketleri arasında daha etiketine sahip. Ve ben varlığını kullanıyorum uniquestringben verileri eşleştirmek istiyorum olmadığını belirlemek için. Yani basit olmayan açgözlü ben istiyorum verilerin sonuna istemiyorum verilerin baştan her şeyi eşleşen biter.

Ben düzenli ifadeler (veya bunların en az bilgim) çözmekte iyi değildir sorunlara yakın kenar biliyorum. Ben sadece bir HTML / XML ayrıştırıcı ettiğimiz bulgular ışığında olabilir, ama sadece basit bir (imsi) aramasıdır.

Sadece eksik olduğunu bunun için bazı kolay yolu var mı?

Oluştur 11/03/2010 saat 17:55
kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
1

Negatif görünüm arkasında sıfır genişlik arıyoruz:

<p><a>((?<!<\/a>).)+<\/a><\/p>uniquestring

Ölçek:

(zyx:~) % echo $T
<p><a>text I don't <tag>want</tag> to match</a></p>random  data<p><a>text I do <tag>want to</tag> match</a></p>uniquestring more matches <p><a>of <tag>text I do</tag> want to match</a></p>uniquestring
(zyx:~) % echo $T | grep -oP '<p><a>((?<!<\/a>).)+<\/a><\/p>uniquestring'
<p><a>text I do <tag>want to</tag> match</a></p>uniquestring
<p><a>of <tag>text I do</tag> want to match</a></p>uniquestring
Cevap 11/03/2010 saat 18:11
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more