2010-08-17 190 views
0

我怎麼會寫一個正則表達式:正則表達式條件

找到匹配,其中一個>字符的第一個實例是<字符的第一個實例之前。

(我找不好的HTML,其中一條線收盤>最初沒有開口<

+0

這並假定你的HTML中的方式,讓所有的HTML是在同一行格式化。所以如果有人啓動了一個HTML標籤並在下一行關閉它,你會得到誤報,儘管HTML是有效的。 – spig 2010-08-17 14:53:19

+0

哪種編程語言? – kennytm 2010-08-17 14:54:58

回答

0
^[^<>]*> 

如果您需要相應的<爲好,

^[^<>]*>[^<]*< 

如果有是第一個標籤之前的標籤的可能性>

^[^<>]*(?:<[^<>]+>[^<>]*)*> 

請注意,它可能會導致誤報,例如

<!-- > --> 

是一個有效的HTML,但RegEx會抱怨。

+0

看來,如果這不會趕上這條線: badtag2> – 2010-08-17 15:22:12

1

這項工作?

string =~ /^[^<]*>/ 

這應該在該行的開頭開始,尋找那些不開放「<」,然後匹配,如果發現一個接近「>」標籤的所有字符。

+1

如果>是從上面的行關閉一個會發生什麼? – 2010-08-17 14:54:12

+0

我認爲這是一個問題。這將做他要求它做的事情。爲了得到前面的代碼,使用正則表達式來檢查非常規語言,從而打開蠕蟲病毒。 – spig 2010-08-17 15:06:25

+0

在perl/ruby​​和其他語言中,您可以使用「m」修飾符,將整個字符串視爲一行,而不管換行符如何。我重新閱讀他的問題,他並不一定指出它將全部在一行上。 'string =〜/^[^ <]*>/m' – spig 2010-08-17 15:32:42

2

這是一個非常糟糕的主意,試圖用正則表達式解析html,甚至嘗試用正則表達式來檢測破壞的html。

當有換行符時,會發生什麼情況,以便>字符是行上的第一個字符,例如(有效的html)。

你可能會從閱讀這個問題的答案也得到一些里程:RegEx match open tags except XHTML self-contained tags