gpt4 book ai didi

regex - 是否有可能找到具有反向引用的独占匹配项(在或组语句中)?

转载 作者:行者123 更新时间:2023-12-02 01:28:25 25 4
gpt4 key购买 nike

我正在阅读反向引用 here但这都是关于匹配整个捕获组的。假设我有以下字符串:

"This is a test to find the dog."
"This is a dog that I will test."
"This test is made to test."
"This is a test to test a dog."

1 和 2 应该匹配,3 和 4 不匹配。

我想知道是否只有当 testdog 完全从彼此中找到时才可能匹配字符串,所以如果 test 是第一次遇到,只有 dog 会匹配,反之亦然。像这样的东西:

(dog|test).*\1   

除了反向引用应该匹配 dogtest 取决于最先找到的内容。

旁注:我知道我可以使用 (dog.*test|test.*dog) 来做到这一点,但我想知道是否可以使用反向引用(或其他方式)。

最佳答案

你可以用条件测试一个backref,否则你只能匹配一个backreference。
反向引用对于捕获缓冲区是不变的,不能更改,只能有条件地测试。

示例 (?:(dog)|test).*?(?(1)test|dog)

更新

两次没有捕捉到单词

((dog)|test)(?:(?!\1).)*?(?(2)test|dog)

关于regex - 是否有可能找到具有反向引用的独占匹配项(在或组语句中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35563143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com