2011-10-06 19 views
8

(çeşitli html etiketlerinde) ile html öznitelikleriyle eşleşen bir sorunum var.Regex - Bir HTML kodundaki eşleşme özniteliği

myAttr=\"([^']*)\" 

HTML pasajını: Bunu yapmak için, ben desen kullanmak

<img alt="" src="1-p2.jpg" myAttr="http://example.com" class="alignleft" /> 

o myAttr/> metni seçer ama seçmeniz gerekir myAttr="..." ("http://example.com")

cevap

16

Karakter sınıfınızın içinde bir kesme noktanız (') var, ancak bir alıntı yapmak istediniz (").

myAttr=\"([^"]*)\" 

gerçekten shouldn't be parsing HTML with regexes, Söylediğin. (Maalesef "Eğer ne yaptığınızı biliyorsanız ..." çeşitli fazlası olduğunu soruya diğer cevaplar vardır. Yine cevap o bağlamak. Ama farkında olmak iyidir.)

  • yorumların içine eşleştirmek için dikkatli olun: Eğer regexing sınırlamak bile

    Not sadece size dikkate almak çok şey var bağlıyor.

  • CDATA bölümlerinin içine uymamaya dikkat edin.
  • Öznitelikler, çift tırnak yerine tek tırnak işaretleri ile parantez içine alınmışsa ne olur?
  • Nitelikler hiç alıntı içermiyorsa ne olur?

Bu nedenle, önceden oluşturulmuş, ciddi ayrıştırıcılar genellikle çağrılır.

4

Bu açgözlü bir niceleyicidir. Bunu olmayan açgözlü yapmak için bir soru işareti Takip etmeyi:

myAttr=\"([^']*?)\" 
2

sadece myAttr parametresini değerini istiyorsanız, bu kullanın:

"myAttr=\"([^\"]+)\"" 
0

Eğer kullanım deneyin olabilir

myAttr=\"?[\w:\-]+ ?= ?("[^"]+"|'[^']+'|\w+)\" 
0

< [^>] *>

Sadece bu i deneyin remove tüm etiket

Örnek şey için bu yardım

+2

soruyu okudun s? – Toto

İlgili konular