我有這個字串:
row = <line><a>111</a><b>222</b><c>333</c></line><line><a>444</a><b></b><c>555</c></line>
如果<b>沒有值,在這種情況下,我需要從字串中洗掉所有行:
<line><a>444</a><b></b><c>555</c></line>
我是否應該將我的行拆分為一個陣列并檢查每一行而不是將其連接到一個新字串而不包含包含空 b 的行?有沒有簡單/聰明的方法?
uj5u.com熱心網友回復:
使用re.sub我們可以嘗試:
row = '<line><a>111</a><b>222</b><c>333</c></line><line><a>444</a><b></b><c>555</c></line>'
output = re.sub(r'<line>(?:(?!<line>).)*<b></b>.*?</line>', '', row)
print(output) # <line><a>111</a><b>222</b><c>333</c></line>
上面使用的正則運算式中的(?:(?!<line>).)術語將匹配內容而不跨越結束標簽</line>,并且通常被稱為“tempered dot”。這個想法是我們想要<b>匹配<line>.
請注意,對于更通用的解決方案,請考慮使用 XML 決議器。假設下面的所有標簽<line>都是單級的并且沒有深度嵌套,正則運算式恰好在這里作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/435683.html
上一篇:根據R中的字串距離匹配兩列
下一篇:如何使用模式從字串中獲取特定資料
