Regex 正则表达式:给出替代顺序优先于捕获位置

Regex 正则表达式:给出替代顺序优先于捕获位置,regex,Regex,在正则表达式中,我想给出一个更高优先级的位置,即匹配的起始位置。例如,ABQ的regex(?:A | B)。*Q将返回 ABQ用于字符串asdfABQasdf BAQ用于字符串asdfBAQasdf 在第二种情况下,是否有方法仅返回AQ?因此,如果第一个备选方案没有产生任何效果,则仅使用第二个备选方案(B)。您对BABQ的预期结果将是ABQ。请尝试。或(?:B(?![^ABQ]*A[^QB]*Q)| A)[^ABQ]*Q。真正的用例是什么?这取决于您的编程语言,但大多数“regex matc

在正则表达式中,我想给出一个更高优先级的位置,即匹配的起始位置。例如,
ABQ
的regex
(?:A | B)。*Q
将返回

  • ABQ
    用于字符串
    asdfABQasdf
  • BAQ
    用于字符串
    asdfBAQasdf

在第二种情况下,是否有方法仅返回
AQ
?因此,如果第一个备选方案没有产生任何效果,则仅使用第二个备选方案(
B
)。

您对
BABQ
的预期结果将是
ABQ
。请尝试。或
(?:B(?![^ABQ]*A[^QB]*Q)| A)[^ABQ]*Q
。真正的用例是什么?这取决于您的编程语言,但大多数“regex match”函数将始终返回第一个匹配的位置,而不是最短的位置(或任何其他自定义优先级)。也许您真的应该使用
if/A.*Q/.test(str){…}或者if/B.*Q/.test(str){…}
我正在尝试在LaTeX文档中查找一对括号(使用Python 3)。不幸的是,可能会出现开放式间隔,例如
]7;8[
。当我试图一次搜索所有内容时,连续多次搜索都会产生错误的结果。我只需运行多次搜索,然后选择“最佳”结果。