關於這一點,我怎麼能在C#Regex上啓用dotall標誌? 而我有這個正則表達式。C#|正則表達式Dotall和結果匹配
string reg = "<table>.*</table>";
再舉例來說,我regexed這個HTML文本
<table id="table1">
<table id="table2">
</table>
</table>
哪裏我正則表達式中止比賽?第一</table>
或第二</table>
謝謝你們.. :)
關於這一點,我怎麼能在C#Regex上啓用dotall標誌? 而我有這個正則表達式。C#|正則表達式Dotall和結果匹配
string reg = "<table>.*</table>";
再舉例來說,我regexed這個HTML文本
<table id="table1">
<table id="table2">
</table>
</table>
哪裏我正則表達式中止比賽?第一</table>
或第二</table>
謝謝你們.. :)
正則表達式是由默認的貪婪,吞噬儘可能多地。因此,它會停在第二張桌子上。
您可以通過應用問號修飾符來更改此設置。
<table>.*?</table>
這就是說,你需要確保你的正則表達式是建立覆蓋多行文字。
如果我有這個'
必須同意Qtax。正則表達式不是解析標記的正確解決方案。你已經用你自己的例子證明了這一點。 – 2011-06-09 09:34:21
*
是「貪婪的」操作員 - 即它吃掉儘可能,所以它會在第一<table>
和第二</table>
之間匹配(提供正則表達式被配置成多行匹配結束)。您可以通過使用*?
來代替它,使其變得「非貪婪」。
怎麼樣,如果我有這個'
DOTALL是regexflag所以你可以使用這樣的: Regex.Replace(輸入,正則表達式,替換,RegexOptions.Singleline | RegexOptions.IgnoreCase)
DOTALL = RegexOptions.Singleline,因爲它處理字符串作爲單線。
,你還可以修改正則表達式標誌的正則表達式指令的中間,像: - 匹配具有以下有效的標誌圖案的剩餘部分(S):米格(多行,忽略大小寫,全局和單線)
第100次。不要在XML/HTML〜上使用REGEX! – leppie 2011-06-09 09:11:40
一個更有趣的例子是你的正則表達式匹配從第一個「
@leppie,XPATH是不夠準確的.. – 2011-06-09 09:18:53