我想了解更多关于正则表达式的知识。正则表达式:如何在模式的结果上使用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指出我需要准确防止回溯。谢谢全部 –