2024-07-04 05:19:00 发布
网友
如果我用OR管道做正则表达式,比如(A|B|C)
OR
(A|B|C)
https://regex101.com/r/gB1eP0/4
它总是在我的源代码中按顺序找到第一个匹配项
事实上,我正在尝试设置它,所以我把选项的顺序是它寻找的顺序。换句话说,在我的示例中,它总是首先查找'A',如果找到了,就停止搜索并返回A,如果没有找到,它将搜索B,如果没有找到,它将搜索C,如果找到了,则返回C。有没有一种方法可以按优先级排序,这样在上面的例子中,它在每种情况下都会找到A?你知道吗
A
B
C
以@WiktorStribiżew为例:
(A|(B|C(?!.*B))(?!.*A))
基本上,使用负的lookahead,然后对所有Or管道进行级联(使用括号)。你知道吗
匹配A(A)
如果后面没有A(B)(?!),则匹配B?!。*A)
如果后面没有B或A(C)(?!),则匹配C?!。*B) (?!。*A)
https://regex101.com/r/zQ3pW0/1
以@WiktorStribiżew为例:
(A|(B|C(?!.*B))(?!.*A))
基本上,使用负的lookahead,然后对所有Or管道进行级联(使用括号)。你知道吗
匹配A(A)
如果后面没有A(B)(?!),则匹配B?!。*A)
如果后面没有B或A(C)(?!),则匹配C?!。*B) (?!。*A)
https://regex101.com/r/zQ3pW0/1
相关问题 更多 >
编程相关推荐