加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在C#中读取RegEx捕获

发布时间:2020-12-16 01:21:02 所属栏目:百科 来源:网络整理
导读:我开始写一本C#书,我决定把RegEx放到混音中,让枯燥的控制台练习更有趣.我想要做的是在控制台中询问用户他们的电话号码,根据RegEx进行检查,然后捕获数字,这样我就可以按照我想要的方式对其进行格式化.除了RegEx捕获部分之外,我已经完成了所有工作.如何将捕获
我开始写一本C#书,我决定把RegEx放到混音中,让枯燥的控制台练习更有趣.我想要做的是在控制台中询问用户他们的电话号码,根据RegEx进行检查,然后捕获数字,这样我就可以按照我想要的方式对其进行格式化.除了RegEx捕获部分之外,我已经完成了所有工作.如何将捕获值转换为C#变量?

也可以随意更正任何代码格式或变量命名问题.

static void askPhoneNumber()
{
    String pattern = @"[(]?(d{3})[)]?[ -.]?(d{3})[ -.]?(d{4})";

    System.Console.WriteLine("What is your phone number?");
    String phoneNumber = Console.ReadLine();

    while (!Regex.IsMatch(phoneNumber,pattern))
    {
        Console.WriteLine("Bad Input");
        phoneNumber = Console.ReadLine();
    }

    Match match = Regex.Match(phoneNumber,pattern);
    Capture capture = match.Groups.Captures;

    System.Console.WriteLine(capture[1].Value + "-" + capture[2].Value + "-" + capture[3].Value);
}

解决方法

C#正则表达式API可能非常令人困惑.有团体和捕获:

>组表示捕获组,它用于从文本中提取子字符串
>如果组出现在量词中,则每组可以有多个捕获.

层次结构是:

>匹配

>集团

>捕获

(一个匹配可以有几个组,每个组可以有几个捕获)

例如:

Subject: aabcabbc
Pattern: ^(?:(a+b+)c)+$

在此示例中,只有一个组:(a b).该组位于量词内,并且匹配两次.它会生成两个捕获:aab和abb:

aabcabbc
^^^ ^^^
Cap1  Cap2

当一个组不在量词内时,它只生成一个捕获.在您的情况下,您有3个组,每组捕获一次.你可以使用match.Groups [1] .Value,match.Groups [2] .Value和match.Groups [3] .Value来提取你感兴趣的3个子串,而不需要依赖捕获概念.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读