【发布时间】:2016-02-22 20:26:10
【问题描述】:
我正在阅读反向引用 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 不应该匹配。
我想知道是否只有当test 和dog 是相互独占时才可以匹配字符串,所以如果首先遇到test,则只有dog 会给出匹配,反之亦然。比如:
(dog|test).*\1
除了反向引用应该匹配dog 或test,具体取决于首先找到的内容。
旁注:
我知道我可以使用(dog.*test|test.*dog) 来做到这一点,但我想知道是否可以使用反向引用(或其他方式)。
【问题讨论】:
-
“这个测试是为了测试狗。”:有效还是无效?换句话说,它应该包含两个单词,还是不应该包含任何单词两次,或者两者都包含?
-
@tobias_k 让我们说不要让它太复杂是有效的,但如果真的可以完全找到它们,那就太好了。
-
@sln 你能举个例子说明我如何使用它来有条件地测试它吗?这是否意味着我可以说
if( \1 == dog) then test else dog?类似的东西(但当然翻译成正则表达式)? -
@sln That works,如果您想将其发布为答案,我想我的问题已经基本解决了。我想知道 tobias 的建议是否可能,真正找到独家匹配
标签: regex backreference