我正在除錯一些 JavaScript 代碼,我需要識別包含“=”的行,然后是比較運算子,例如“==”、“>”、“<”、“!=”。但是,我想忽略以 for 回圈開頭的行。所以我想識別這樣的行:
x = (y > z) * 2;
但忽略這樣的行:
for (var i = 1; i<5; i ) {
我相信,這需要消極的回顧。但是文本“for”,我會放在否定的后面,并沒有緊跟在我想要匹配的文本之前。
我在記事本 中嘗試了這個正則運算式:
(?<!for .*) = .*(==|>|<|!=)
但它被報告為“無效”,因為后視內的量詞使其寬度不固定。
另一方面,這個正則運算式有效但對我沒有幫助,因為“for”不會緊跟在我要匹配的文本之前:
(?<!for ) = .*(==|>|<|!=)
任何建議,將不勝感激。
uj5u.com熱心網友回復:
嘗試否定前瞻:
^(?!.*for ).* = .*(==|>|<|!=)
如果您不想匹配“for”部分,請放入另一個捕獲組,然后訪問/替換該組
^(?!.*for ).* (= .*(?:==|>|<|!=))
更健壯一點(容忍不存在的空格和<= >=,但令人討厭):
^(?!.*?\bfor\b).*?[^\n!<>=](=[^\n=].*?(?:[<>]|[!=<>]=))
編輯:
我必須插入^, 以確保匹配從行首開始。根據您的正則運算式風格,^可能會完全匹配行的開頭或文本的開頭。如果是后者,你必須使用類似的東西(?<=^|\n),一個積極的后視,而不是^(這適用于你的 Notepad 情況)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/475181.html
