我想從一段文本中提取所有鏈接目標。因此,例如,從以下匹配所有鏈接,除了括號中的開頭部分
data1 = '<a href="a"> a (d <a href="b"> f) b (<a href="c">) d <a href="d"> d(<a href="e">)'
我想獲得[ 'A', 'B', 'C', 'd', 'E']。
但是,我想跳過括號內的任何鏈接,並且出現在不包含在括號內的鏈接之前。在第一個不在括號內的鏈接之後,括號變得無關緊要,我想匹配所有鏈接。因此,對於字符串
data2 = 'a (d <a href="b"> f) b (<a href="c">) d <a href="d"> d(<a href="e">)'
我想獲得[ 'd', 'E']。
我試過使用正則表達式模塊。下面的表達式捕獲(有和沒有括號)的所有鏈接:
regex.match('(?:.*?<a href="([^>])+">)*', data2).captures(1)
我怎麼能跳過括號初始鏈接?
請澄清:在'data1'中,'()'是括號內的鏈接,並且出現在不在括號內的鏈接之前。爲什麼輸出中有'c'?在'data2'中,'(d f)'不會出現在鏈接不在括號之前(它後面的鏈接也在括號中),那爲什麼它不在輸出中? – gil
我試圖澄清它:我想在第一個不在括號中的鏈接之前忽略括號中的任何鏈接。在第一個鏈接之後,括號不再重要。 – Daniel