我想了解更多關於正則表達式的知識。正則表達式:如何在模式的結果上使用lookahead/lookbehind?
我只是試圖匹配沒有被方括號包圍的訂單號(#1234
但不是[#1234]
),但我的問題更多地是關於在任意模式中使用lookahead斷言。
在我第一次嘗試時,我注意到我的負面超前比賽\d+(?!\])
將導致\d+
保持匹配的數字,直到它沒有跟隨]
。只有在整體沒有跟隨]
後,我才需要數字匹配。
我目前的解決方案通過展望數字鏈中是否存在]
來殺死第一位數字的匹配。
這是一個標準的方式來解決這個問題嗎?我只是在前瞻中重複比賽模式。如果這是一個更復雜的正則表達式,我會採用相同的方法嗎?重複有效匹配,然後是無效匹配,並讓正則表達式引擎爲每個字母重複一遍?
對於有效的匹配,它必須與匹配中的字符匹配多次。
(?<!\[) # not preceded by [
#\d+
(?!\d*\]) # not followed zero+ digits and ]
# or (?!\d|\]) # not followed by digit or ]
我會很感激任何反饋!
不知道你的」 ......只有在全部後面沒有什麼意思一個 ]」。你能否添加一個沒有得到你想要的匹配的字符串的例子,以及在這種情況下匹配應該是什麼? – Faust
@Faust:我得到了我想要的比賽,我只是覺得我的方法不太好。 Narendra Yadala指出我需要準確防止回溯。謝謝全部 –