Regex PHP: 向前看两次
Regex PHP: to look ahead twice
为什么这样:
/^lol(?=abc)(?=dfg)$/
无法匹配这个
lolabcdfg
感谢您的回答!你真好!
这个正则表达式就可以了
/^lol(abc)?(dfg)?$/
我总是使用https://regex101.com/在线测试我的正则表达式
因为前瞻只断言,它们不消耗字符...所以基本上你是说,
匹配哈哈:
lol
然后寻找 abc:
lol(abc) // matches
现在期待dfg
lol(dfg) // does not match
这就是它不起作用的原因。如果要同时检查 abc 和 abcdfg,则需要使用字符。如果你只想向前看,你可以这样做:
/^lol(?=abc|dfg|abcdfg)/
这将匹配字符串
- lolabc
- loldfg
- lolabcdfg
不过用处不大。以下比较合适
/^lol(abc)?(dfg)?/
哪个会匹配 lol,可选 abc 然后可选 dfg。
为什么这样:
/^lol(?=abc)(?=dfg)$/
无法匹配这个
lolabcdfg
感谢您的回答!你真好!
这个正则表达式就可以了
/^lol(abc)?(dfg)?$/
我总是使用https://regex101.com/在线测试我的正则表达式
因为前瞻只断言,它们不消耗字符...所以基本上你是说,
匹配哈哈:
lol
然后寻找 abc:
lol(abc) // matches
现在期待dfg
lol(dfg) // does not match
这就是它不起作用的原因。如果要同时检查 abc 和 abcdfg,则需要使用字符。如果你只想向前看,你可以这样做:
/^lol(?=abc|dfg|abcdfg)/
这将匹配字符串
- lolabc
- loldfg
- lolabcdfg
不过用处不大。以下比较合适
/^lol(abc)?(dfg)?/
哪个会匹配 lol,可选 abc 然后可选 dfg。