正则表达式匹配文本中的重复部分

时间:2011-10-17 16:15:53

标签: c# regex

另一个正则表达式问题。如何创建一个正则表达式来捕获文本的一部分并在其他地方匹配该部分?

例如,假设我有一个表达式"(ab[cd]) bbb (ab[cd])"它将匹配以下字符串:

"abc bbb abc"
"abc bbb abd"
"abd bbb abc"

我想要做的是获取文本'abc'的第一个捕获部分并检查它是否也在文本末尾重复,因此这些字符串将产生这样的结果:

"abc bbb abc - Success"
"abc bbb abd - Error"
"abd bbb abc - Error"
"abd bbb abd - Success"

当然这个例子很简单,并且可以在不使用正则表达式的情况下检查它,但我的实例更复杂,我想在这里坚持使用正则表达式。

3 个答案:

答案 0 :(得分:2)

查看backreferences

@"^(ab[cd]) bbb \1$"

答案 1 :(得分:1)

只需使用反向引用。例如

^(abc).*?\1$

将匹配以abc开头的字符串,后跟任何内容,并以字符串开头匹配的部分结束。

答案 2 :(得分:1)

您可以使用反向引用。您的示例中的表达式为

/(ab[cd]) bbb \1/