2 回答

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
條件正則表達(dá)式的一個(gè)很好的用例:
@(")?((?(1)[^"]+|\w+))
請(qǐng)參閱regex101.com 上的演示。
看
import re
text = """
lorem ipsum @"multiple words tag"
lorem ipsum @tag
"""
tags = [m.group(2) for m in re.finditer(r'@(")?((?(1)[^"]+|\w+))', text)]
print(tags)
# ['multiple words tag', 'tag']
為了替換匹配項(xiàng)并獲取標(biāo)簽,請(qǐng)使用以下代碼:
import re
text = """
lorem ipsum @"multiple words tag"
lorem ipsum @tag
"""
tags = []
def replacer(match):
tags.append(match.group(2))
return ""
text = re.sub(r'@(")?((?(1)[^"]+|\w+))(?(1)")', replacer, text)
print(text)
print(tags)

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
關(guān)于 a)/b):
我會(huì)為 python 3.7-3.8 建議以下正則表達(dá)式:
@(?:"((?:\w+\s{1}){0,}\w+)"){0,1}(?:(\w+){0,1})
添加回答
舉報(bào)