2016-12-15 41 views
0

當我嘗試寫一個正則表達式匹配,是以鏈接的HREF爲第2組和錨標記文本組3的定位代碼:定期爲錨標記表達

<a(href=\"(\S+)\")?.*>([a-zA-Z0-9]+)<\/a>

到符合這樣的文字:

hello there <a href="Hello/world1">Hello World1</a><b>How are You<b><a href="Hello/world2">Hello World2</a>

但不是爲3組比賽Hello World1它匹配Hello World2。有人可以幫我寫一個正則表達式來匹配group2 = Hello/world1和group2 = Hello World2。 謝謝。

Click to see...

+3

不要使用正則表達式來解析HTML,可能存在太多變化。使用DOM解析器庫。 – Barmar

+0

是的,但我的任務是使用正則表達式來解決這個問題。 – mbhargav294

+1

使用非貪婪的'。*?'代替'。*'。或者使用'[^>] *',這樣它就不會超過第一個'>'。 – Barmar

回答

0

,感謝你們給予看起來像例子中的正確語法:

(?:<a(?: href=[^>]+>([^<]+)<\/a>(?!<a)?))+ 

但使用正則表達式來解析HTML是非常不推薦的,作爲一種語言解析器會更有效,可以處理所有可能發生在html中的情況。