c# 正则表达式分组

internal class Program
{
private static void Main(string[] args)
{

var content = Read(@"E:\workspace\日志\2016-06-21.LOG2016-06-21.LOG");
Regex reg3 = new Regex(@"手机号(?<result>(\d+)?)");
var matches = reg3.Matches(content);
if (matches.Count > 0)
{
var list = new List<string>();
string phone;
foreach (Match item in matches)
{
phone = item.Result("${result}");
if (list.Contains(phone))
{

}
else
{
list.Add(phone);
}
}
}
}

public static string Read(string path)
{
StreamReader sr = new StreamReader(path, Encoding.Default);
String line;
StringBuilder sb = new StringBuilder();
while ((line = sr.ReadLine()) != null)
{
sb.AppendLine(line);

}
return sb.ToString();

}
}

时间: 2024-12-12 15:52:05

c# 正则表达式分组的相关文章

正则表达式分组小记

说是小记,主要是怕忘记了. 一个正则语法-命名分组 正则分组依赖圆括号,每个括号内的表达式是一个分组,为了避免,在一个完整的表达式中出现多个分组,依靠组序号获取组匹配项时的混乱,使用命名分组是很好地方法. 在.Net中语法为  (?<name>pattern)  其中尖括号(<>)可以使用单引号('')替换. 在Python中语法基本一致,只是在组名称前多了一个大写字母P  (?P<name>pattern)   不可以使用单引号替换尖括号. 以Python为例,如图

正则表达式分组()、断言(?&lt;:)详解

正则表达式中的断言,作为高级应用出现,倒不是因为它有多难,而是概念比较抽象,不容易理解而已,今天就让小菜通俗的讲解一下. 如果不用断言,以往用过的那些表达式,仅仅能获取到有规律的字符串,而不能获取无规律的字符串. 举个例子,比如html源码中有<title>xxx</title>标签,用以前的知识,我们只能确定源码中的<title>和</title>是固定不变的.因此,如果想获取页面标题(xxx),充其量只能写一个类似于这样的表达式:<title>

正则表达式分组捕获非捕获的示例理解

举几个例子 一.使用捕获型() 比如0.23 1.(^\d+)(\.)(\d{0,2}) 正则表达式有3个()使用match就会产生3个分组 2.^\d+\.\d{0,2} 没有(),不产生分组 二.非捕获型(?:) (?:^\d+)(\.)(\d{0,2}) 第一个分组不再捕获 原文地址:https://www.cnblogs.com/zhaogaojian/p/12207959.html

js正则表达式分组$

1.分组 '[email protected]'.replace(/(\d+)(@)(\w+)(\.com)/,'[$1]$2[$3]$4') //"[442665319]@[qq].com" replace第二个参数传一个字符串,而$number是代替第一个参数的分组. 这里比较特别的是$number是从$1开始的. 2.自定义函数 'abc345efgabcab'.replace(/(\d)/g,num=>num*2); //"abc6810efgabcab&quo

python正则表达式(8)--分组、后向引用、前(后)向断言

无名.有名分组 (1)正则表达式-无名分组 从正则表 达式的左边开始看,看到的第一个左括号"("表示表示第一个分组,第二个表示第二个分组, 依次类推. 需要注意的是,有一个隐含的全局分组(就是索引号为0的分组),就是整个正则 表达式匹配的结果 (2)正则表达式-有名分组 命名分组就是给具体有默认分组编号的组另外再起一个别名,方便以后的引用. 命令分组的语法格式如下: (?P<name>正则表达式) 语法格式中的字符P必须是大写的"P",name是一个合法

廖雪峰Java9正则表达式-2正则表达式进阶-3分组匹配

匹配电话号码 匹配成功后,如果提取想要的字符串 使用(...)可以分组:"^(\d{3,4})\-(\d{6,8})$" String.matcher vs Pattern.matcher public static void main(String[] args){ String regex = "^\\d{3,4}\\-\\d{6,8}"; System.out.println("010-123456789".matches(regex));

常用的操作正则表达式的方法+正则表达式基本元字符使用实例

常用的操作正则表达式的方法: 下面学习一下位于System.Text.RegularExpressions下的Regex类的一些静态方法和委托(只要有一段匹配就会返回true) 1,静态方法IsMatch (返回值是一个布尔类型,用于判断指定的字符串是否与正则表达式字符串匹配,它有三个重载方法) bool IsMatch(string input, string pattern); 参数: input: 要搜索匹配项的字符串. pattern: 要匹配的正则表达式模式. 返回结果: 如果正则表达

JavaScript正则表达式知识点整理

1  正则表达式 使用单个字符串来描述.匹配一系列符号某个句法规则的字符串,可以简单理解为按照某种规则去匹配符合条件的字符串. Ps:https://regexper.com/  可帮助理解正则表达式,正则表达式工具 2  regexp对象 JavaScript通过内置对象RegExp支持正则表达式,有两种方法实例化RegExp对象:字面量.构造函数 3  预定义类 .         等价于 [^\r\n]          即除了回车符和换行符之外的所有字符 \d        等价于[0-

常用正则表达式字符说明

元字符 . . 除换行符的任意字符 DOTALL\ 转义字符[…] 字符集合\d 数字:[0-9]\D 非数字[^0-9]\s 空白字符[<空格>\t\r\n\f\n]\S 非空白字符[^\s]\w 单词字符[A-Za-z0-9_]\W 非单词字符[^\w] 数量词 * 匹配前一个字符0或者多次+ 匹配前一个字符1次或者多次? 匹配前一个字符0次或者1次{m} 匹配前一个字符m次{m,n} 匹配前一个字符m至n次数量词? 变成非贪婪模式 边界 ^ 匹配字符串开头,多行匹配每一行开头$ 匹配字符