根据正则表达式中的第一个匹配而不是源中的第一个匹配,在正则表达式中设置优先级或管道?

2024-07-04 05:19:00 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我用OR管道做正则表达式,比如(A|B|C)

https://regex101.com/r/gB1eP0/4

它总是在我的源代码中按顺序找到第一个匹配项

  • ABC=A
  • BCA=B
  • CBA=C

事实上,我正在尝试设置它,所以我把选项的顺序是它寻找的顺序。换句话说,在我的示例中,它总是首先查找'A',如果找到了,就停止搜索并返回A,如果没有找到,它将搜索B,如果没有找到,它将搜索C,如果找到了,则返回C。有没有一种方法可以按优先级排序,这样在上面的例子中,它在每种情况下都会找到A?你知道吗


Tags: or方法httpscom示例管道源代码排序
1条回答
网友
1楼 · 发布于 2024-07-04 05:19:00

以@WiktorStribiżew为例:

(A|(B|C(?!.*B))(?!.*A))

基本上,使用负的lookahead,然后对所有Or管道进行级联(使用括号)。你知道吗

  1. 匹配A(A)

  2. 如果后面没有A(B)(?!),则匹配B?!。*A)

  3. 如果后面没有B或A(C)(?!),则匹配C?!。*B) (?!。*A)

https://regex101.com/r/zQ3pW0/1

相关问题 更多 >

    热门问题