2014-03-01 32 views
0

我想匹配一個結束標記,後跟一個0+空格/換行符,後跟一個開始標記,後跟一個小寫字母。例子:正則表達式後面跟着小寫字符

  • text</p> <p>blah匹配</p> <p>
  • text</i><i>and more text <b>but not this</b>比賽</i><i>
  • text</i> <i>And more text不匹配

我嘗試這樣做:</.*?>\s*\n*\s*<.*>(?=[a-z]),但它不會對第二個例子的工作,因爲它會匹配</i><i> and more text </b>即使問號應該使它「懶惰」。

+0

爲什麼不使用HTML解析器呢?正則表達式不是*嘗試和處理HTML的工具;它會導致[痛苦和痛苦](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags).. –

回答

0

嘗試:

</[^>]+>\s*<[^/>]+>(?=[a-z]) 

更改 '+' 爲 '*',如果你想成爲能夠匹配空標籤

0

製作一個量詞懶惰不僅使正則表達式的嘗試可能的最短匹配第一,但如果不工作,它會很高興地擴大了比賽,直到整個正則表達式成功。

您需要在您允許以匹配更具體的 - 例如通過不允許標籤尖括號:

</[^<>]*>\s*<[^/][^<>]*>(?=[a-z]) 

(另外,\s已經包含\n,所以\s*\n*\s*可縮短至\s*

相關問題