假設(shè)我有以下字符串,并且我想提取以大寫字母開頭的所有標(biāo)識(shí)符,除非在引號(hào)內(nèi)找到:Match1Match2(Match3("NoMatch1 a NoMatch2 blabla"), Match4)meh<Match5>在這種情況下,Match1、Match2、Match3、Match4和Match5應(yīng)該被捕獲,而NoMatch1和NoMatch2應(yīng)該被忽略,因?yàn)樗鼈兾挥趲б?hào)的字符串內(nèi)。我可以使用 JS 正則表達(dá)式獲得所需的結(jié)果。但是我所有將其轉(zhuǎn)換為有效的 Python 正則表達(dá)式的嘗試都慘敗。到目前為止我遇到的錯(cuò)誤消息:( A lookbehind assertion has to be fixed width* A quantifier inside a lookbehind makes it non-fixed width) A lookbehind assertion has to be fixed width* A quantifier inside a lookbehind makes it non-fixed width我不知道如何解決這個(gè)問題。使用 Python 正則表達(dá)式可以實(shí)現(xiàn)這一點(diǎn)嗎?如果是這樣,我錯(cuò)過了什么?注意:我還沒有實(shí)際的 Python 代碼,到目前為止我一直在https://regex101.com上嘗試這一點(diǎn)。
1 回答

子衿沉夜
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用以下模式:
\b[A-Z]\w+(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)
技巧是使用正向 Lookahead(與 Lookbehind 不同,它可以具有非固定長(zhǎng)度)。因此,我們使用 Lookahead 來檢查雙引號(hào)對(duì)(因?yàn)槊總€(gè)開頭引號(hào)都有一個(gè)結(jié)尾引號(hào))。只要要匹配的單詞后面有偶數(shù)個(gè)雙引號(hào)(即成對(duì)),我們就知道它本身沒有被引號(hào)括起來。
添加回答
舉報(bào)
0/150
提交
取消