亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何匹配標識符,除非在引號內找到標識符?

如何匹配標識符,除非在引號內找到標識符?

天涯盡頭無女友 2023-07-11 17:29:53
假設我有以下字符串,并且我想提取以大寫字母開頭的所有標識符,除非在引號內找到:Match1Match2(Match3("NoMatch1 a NoMatch2 blabla"), Match4)meh<Match5>在這種情況下,Match1、Match2、Match3、Match4和Match5應該被捕獲,而NoMatch1和NoMatch2應該被忽略,因為它們位于帶引號的字符串內。我可以使用 JS 正則表達式獲得所需的結果。但是我所有將其轉換為有效的 Python 正則表達式的嘗試都慘敗。到目前為止我遇到的錯誤消息:( 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我不知道如何解決這個問題。使用 Python 正則表達式可以實現這一點嗎?如果是這樣,我錯過了什么?注意:我還沒有實際的 Python 代碼,到目前為止我一直在https://regex101.com上嘗試這一點。
查看完整描述

1 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

您可以使用以下模式:

\b[A-Z]\w+(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)

技巧是使用正向 Lookahead(與 Lookbehind 不同,它可以具有非固定長度)。因此,我們使用 Lookahead 來檢查引號對(因為每個開頭引號都有一個結尾引號)。只要要匹配的單詞后面有偶數個雙引號(即成對),我們就知道它本身沒有被引號括起來。


查看完整回答
反對 回復 2023-07-11
  • 1 回答
  • 0 關注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號