如何在.NET中使用Regex匹配特定格式的目标字符串
提取特定格式文本的.NET正则实现
需求
提取符合以下格式的文本:以1-3开头,后跟4位数字,接着是空格+字母E+6位数字,需在.NET环境中用Regex实现匹配。
正则表达式
[1-3][0-9]{4}(?: E[0-9]{6})?$
正则说明
[1-3]:匹配开头的1、2、3任意一个数字[0-9]{4}:匹配后续连续4位数字(?: E[0-9]{6})?$:非捕获组,匹配"空格+E+6位数字"的组合,?表示该部分为可选,$匹配行尾(需结合多行模式)
测试数据
successful my registration id is #12345 E112233 (匹配成功) Successful my data is #22331 E001122 (匹配成功) failing 12345 (匹配失败)
- 匹配成功:包含
12345 E112233、22331 E001122的行 - 匹配失败:仅包含
12345的行(缺少"空格+E+6位数字"部分)
预期输出
12345 E112233 22331 E001122
.NET代码实现
var content = @"successful my registration id is #12345 E112233 Successful my data is #22331 E001122 failing 12345"; // 初始化正则,启用多行模式 var regex = new Regex(@"[1-3]\d{4}([ ]E\d{6})?$", RegexOptions.Multiline); // 获取所有匹配项(原代码仅获取第一个匹配,若需全部结果用Matches) var matches = regex.Matches(content); foreach (Match match in matches) { Console.WriteLine(match.Value); }
代码说明
RegexOptions.Multiline:使$匹配每行的结尾,而非整个字符串的结尾Matches方法:获取所有符合条件的匹配结果,若仅需第一个匹配可使用Match方法
内容的提问来源于stack exchange,提问作者krishna mohan
相关产品推荐
相关产品推荐

