如何在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个子串,而不需要依赖捕获概念. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |