我有以下代碼:正則表達式使用 + =無法按預期工作/逃脫 '+'
import re
pattern = r'.className\s*\+?=\s*.*?\+?[\'"](.*?)["\']'
code_str = "if (El.className == 'blue') {\nEl.className = 'className20';\n}\n"
re.findall(pattern, code_str)
輸出>>>['blue', 'className20']
我只希望輸出['className20']
。
[更新] 它還需要處理,其中some_str
與className20
合併此級聯情況。它應該仍然只能返回['className20']
。
code_str2 = "if (El.className == 'blue') {\nEl.className = some_str + 'className20';\n}\n"
re.findall(pattern, code_str)
我也試過了。
pattern = r'.className\s*\+{,1}={1}\s*.*?\+?[\'"](.*?)["\']'
pattern = r'.className\s*\+?[=]{1}\s*.*?\+?[\'"](.*?)["\']'
歡迎任何見解。問題似乎是==
出現在code_str
。我使用的模式太貪婪。我的理解是,\+
正在轉義+
符號,但我可能是錯的。
可接受模式背後的邏輯是什麼?它是駱駝的情況下跟數字? – karthikr
如果你想在**之後的**字符**,而不是在==之後的字**,可以使用兩個步驟:在==之後找到字,並刪除它,包括==。第二步(使用不同的正則表達式,找到** word **之後= –