【发布时间】:2021-10-07 16:20:08
【问题描述】:
我需要在长字符串中匹配以下规则:
- key1=.*(a1|a2).* OR key2=.*(b1|b2|b3).* OR key3=.*(c1|c2|c3).*
- AND key1=.*(d1|d2|d3|d4).*
'=' 意为'包含任何'
我在regex101.com 上尝试了以下正则表达式,但没有按预期工作:
.*((key1=(?=.*(a1|a2)))|(key2=(?=.*(b1|b2|b3)))|(key3=(?=.*(c1|c2|c3))))&(key1=(?=.*(d1|d2|d3|d4))).*
一些应该匹配的字符串:
key1=a2,d3
key2=b1,b3key1=d1
key2=b2key3=c3,a2key1=d4
key1=d2abckey2=b2,b3key1=a1
一些不应该匹配的字符串:
key1=d2
key1=a1key2=b1
key2=b2key3=a1
我的正则表达式有什么问题?你怎么看? 非常感谢
【问题讨论】:
标签: regex pattern-matching logical-operators