如果我使用像 (A|B|C)
这样的 OR
管道执行正则表达式
https://regex101.com/r/gB1eP0/4
它总是在我的源中按顺序找到第一个匹配项,例如
- ABC=A
- BCA=B
- CBA=C
我实际上正在尝试设置它,以便我放置选项的顺序就是它寻找的顺序。换句话说,在我的例子中,它总是首先查找“A”,如果找到,则停止搜索并返回A
,如果没有,它将搜索B
,如果它没有发现它会搜索C
,如果找到则返回C
。有没有办法以这种方式确定优先级,以便实际上在上面的示例中在每种情况下都会找到 A
?
最佳答案
基于@WiktorStribiżew 的示例:
(A|(B|C(?!.*B))(?!.*A))
基本上,使用负先行,然后级联所有 Or 管道(使用括号)。
匹配 A (A)
如果后面没有 A (B)(?!.*A),则匹配 B
如果后面没有 B 或 A,则匹配 C (C)(?!.*B)(?!.*A)
关于python - 根据正则表达式中的第一个匹配项(而不是源中的匹配项)优先考虑正则表达式中的 OR Pipe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39195968/