C#正则表达式,"\1"是什么意思?

例2:标识重复的单词意外地重复单词是编写器常犯的错误。可以使用正则表达式标识重复的单词,如以下示例所示。C#VB复制usingSystem;usingSystem.Tex... 例 2:标识重复的单词

意外地重复单词是编写器常犯的错误。
可以使用正则表达式标识重复的单词,如以下示例所示。

C#

VB

复制

using System;
using System.Text.RegularExpressions;

public class Class1
{
public static void Main()
{
string pattern = @"\b(\w+?)\s\1\b";
string input = "This this is a nice day. What about this? This tastes good. I saw a a dog.";
foreach (Match match in Regex.Matches(input, pattern, RegexOptions.IgnoreCase))
Console.WriteLine("{0} (duplicates '{1}') at position {2}",
match.Value, match.Groups[1].Value, match.Index);
}
}
// The example displays the following output:
// This this (duplicates 'This)' at position 0
// a a (duplicates 'a)' at position 66

正则表达式模式 \b(\w+?)\s\1\b
可以解释如下:

\b

在单词边界处开始。

(\w+)

匹配一个或多个单词字符。 它们一起构成可称为 \1 的组。

\s

与空白字符匹配。

\1

与等于名为 \1 的组的子字符串匹配。

\b

与字边界匹配。

通过将正则表达式选项设置为 RegexOptions.IgnoreCase,调用 Regex.Matches 方法。 因此,匹配操作不区分大小写,此示例将子字符串“This
this”标识为重复。

请注意输入字符串包含该子字符串“this?
This”。 但是,由于插入标点符号,该子字符串不被标识为重复。

这是编程指南的例子.
展开
 我来答
梦里寻你我他
推荐于2017-11-25 · TA获得超过2199个赞
知道大有可为答主
回答量:2171
采纳率:42%
帮助的人:1194万
展开全部
\0是完整正则匹配的自身

\1 就是用户用()定义的第一组
同理\2 就是第二组

例如(\d)(\w)
匹配1b
这时
\0是1b
\1是1
\2是b
更多追问追答
追问
你的意思,是不是:
(\d)(\w)\0\1

等价于:
(\d)(\w)(\d)(\w)

也就是说,是为了省得重复写...是么?
追答

确实可以这样写


不过

(\d)(\w)(\d)(\w)


应该是

(\d)(\w)\1\2


如果字串为1b2b

但是这是\1代表的是1 \2代表的是b,所以无法匹配


如果是1b1b,则可以匹配

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式