.NET正则表达式Regex
在C#中,要使用正则表达式类,请在源文件开头处添加以下语句:
using System.Text.RegularExpressions;
可参考微软文档 :.NET 正则表达式
一、IsMatch(Input,patter[,options]) 否则匹配
如果表达式在字符串中匹配,返回布尔值。
if (Regex.IsMatch("a.b.c.d", @"(\w)\.(\w)", RegexOptions.IgnoreCase))
Console.Write("匹配成功");
正则表达式选项:RegexOptions
有如下选项
|
RegexOptions枚举值 |
内联标志 |
简单说明 |
|
ExplicitCapture |
n |
只有定义了命名或编号的组才捕获 |
|
IgnoreCase |
i |
不区分大小写 |
|
IgnorePatternWhitespace |
x |
消除模式中的非转义空白并启用由 # 标记的注释。 |
|
MultiLine |
m |
多行模式,其原理是修改了^和$的含义 |
|
SingleLine |
s |
单行模式,和MultiLine相对应 |
内联标志
相对于用RegexOptions在new Regex时定义Regex表达式的全局选项来说,内联标志可以更小粒度(以组为单位)的定义匹配选项,从而更方便表达我们的思想。
\bA(?i)b\w+\b 匹配“ABA Able Act”中的“ABA”和“Able”
二、Match(Input,patter[,options]) 单个匹配
如果在输入字符串中发现匹配,则返回匹配对象。(返回单个匹配对象)
Match m = Regex.Match("a.b.c.d", @"(\w)\.(\w)");
if (m.Success)
Console.Write("Match=" + m.Value + " pos:" + m.Index);
//Match=a.b pos:0
三、Matches(Input,patter[,options]) 多个匹配
如果在输入字符串中发现全部匹配,则返回匹配集合对象。(返回多个匹配对象)
注意:匹配是不能重叠的,如果有重叠,在默认情况下,就选择最长的匹配(除非元字符后加问号)。
Regex的Match()或Matches()=>Match匹配(MatchCollection)=>Group 组(GroupCollection子模式)=>Capture捕获(CaptureCollection)
MatchCollection mc = Regex.Matches("a.b.c.d", @"(\w)\.(\w)");
for (int i = 0; i < mc.Count; i++)
{
Match match = mc[i];
Console.WriteLine("Match=" + match.Value + " :" + i);
for (int j = 0; j < match.Groups.Count; j++)
{
Group group = match.Groups[j];
Console.WriteLine("--Group =" + group.Value + " :" + j);
for (int k = 0; k < group.Captures.Count; k++)
{
Console.WriteLine("------Captures =" + group.Captures[k].Value + " :" + k);
}
}
}
结果如下:
Match=a.b :0
----Group =a.b :0
--------Captures =a.b :0
----Group =a :1
--------Captures =a :0
----Group =b :2
--------Captures =b :0
Match=c.d :1
----Group =c.d :0
--------Captures =c.d :0
----Group =c :1
--------Captures =c :0
----Group =d :2
--------Captures =d :0
返回匹配成功后的第一个子模式的值:
var mc = Regex.Matches(Server.UrlDecode(client.ResponseHeaders["Content-Disposition"]), @"filename=(.+)");
string filename = mc[0].Groups[1].Value;
四、Replace(Input,patter,replacement或evaluator [,options]) 替换
用给定的Replacement替换input中的匹配。
Console.WriteLine(Regex.Replace("this test*", "[^a-zA-Z]", "()")); //this()test()
Console.WriteLine(Regex.Replace("sevenyear", @"\w+", m =>
{
return m.Value.ToUpper();
})
); //SEVENYEAR
五、Split(Input,patter[,options]) 拆分
在由模式定义的位置拆分input,返回string[]
string[] s = Regex.Split("first-second-thrid", "-");
for (int i = 0; i < s.Length; i++)
{
Console.WriteLine(s[i]);
}
//first
//second
//thrid
拆分字符串举例:等长度分割字符串
1、每4个长度进行分割
var temp = Regex.Split("1234abcdef", @"(?<=\G.{4})(?!$)");
temp.ToList().ForEach(t => Console.WriteLine(t));
//1234
//abcd
//ef
2、提取单词
var temp = Regex.Split("1234 abcd efa", @"(?<=\S+\b\s+)");
temp.ToList().ForEach(t => Console.WriteLine(t));
//1234
//abcd
//ef
3、每两个单词进行分割
var temp = Regex.Split("1234,abcd,12345,abcd,ab", @"(?<=\G(?:\w+[,,]){2})");
temp.ToList().ForEach(t => Console.WriteLine(t));
//1234,abcd,
//12345,abcd,
//ab
六、实例化Regex类
Regex exp= new Regex(@"\w\.\w", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
MatchCollection mc = exp.Matches("a.b.c.d");
.NET正则表达式Regex的更多相关文章
- C#正则表达式Regex常用匹配
使用Regex类需要引用命名空间:using System.Text.RegularExpressions; 利用Regex类实现验证 示例1:注释的代码所起的作用是相同的,不过一个是静态方法,一个是 ...
- C#正则表达式Regex类的用法
C#正则表达式Regex类的用法 更多2014/2/18 来源:C#学习浏览量:36891 学习标签: 正则表达式 Regex 本文导读:正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串, ...
- C#正则表达式Regex类
C#正则表达式Regex类的使用 C#中为正则表达式的使用提供了非常强大的功能,这就是Regex类.这个包包含于System.Text.RegularExpressions命名空间下面,而这个命名空间 ...
- (四)boost库之正则表达式regex
(四)boost库之正则表达式regex 正则表达式可以为我们带来极大的方便,有了它,再也不用为此烦恼 头文件: #include <boost/regex.hpp> 1.完全匹配 std ...
- boost 正则表达式 regex
boost 正则表达式 regex 环境安装 如果在引用boost regex出现连接错误,但是引用其他的库却没有这个错误,这是因为对于boost来说,是免编译的,但是,正则这个库 是需要单独编译 ...
- 请写出正则表达式(regex),取得下列黄色部分的字符串 TEL: 02-236-9655/9659 FAX:02-236-9654 (黄色部分即02-236-9655/9659 ) ( 测试面试题)
请写出正则表达式(regex),取得下列黄色部分的字符串 TEL: 02-236-9655/9659 FAX:02-236-9654 答: package test1; import java.uti ...
- Python 正则表达式(RegEx)
版权所有,未经许可,禁止转载 章节 Python 介绍 Python 开发环境搭建 Python 语法 Python 变量 Python 数值类型 Python 类型转换 Python 字符串(Str ...
- C#正则表达式Regex类使用
作为文本处理的利器——Perl语言对正则表达式的最强大支持起到了重要的作用,正因为如此,许多其他语言在加入正则表达式引擎的时候都会或多或少的兼顾perl风格的正则表达式,开发出相应的引擎.本人使用pe ...
- Golang 正则表达式Regex相关资料整理
Golang 支持的正在表达式是 https://github.com/google/re2/wiki/Syntax 注意这里提示 NOT SUPPORTED的。 工具 一些测试正则表达式的工具 推荐 ...
- 正则表达式—RegEx(RegularExpressio)(三)
今日随笔,继续写一点关于正则表达式的 知识.前两天介绍了正则表达式验证匹配,提取等一些基本的知识,今天继续分享下它的另一个强大的应用:替换(replace). 开始之前,还是要补一下昨天的内容. 在我 ...
随机推荐
- gulp教程之gulp中文API
1.gulp.src(globs[, options]) 1.1.说明:src方法是指定需要处理的源文件的路径,gulp借鉴了Unix操作系统的管道(pipe)思想,前一级的输出,直接变成后一级的输入 ...
- zabbix与nagios八项重要对比 结论根据业务环境需求决定
1.web功能: Nagios简单直观,报警与数据都在同一页面,***.红色即为问题项.Nagios web端不要做任何配置. Zabbix监控数据与报警是分开的,查看问题项需要看触发器,查看数据在最 ...
- Jquery Ajax 复杂json对象提交到WebService
在ajax的已不请求中,常常返回json对象.可以利用json.net给我们提供的api达到快速开发. 例子: using System;using System.Collections;using ...
- NFS挂载时出现"access denied by server while mounting"的解决方法
NFS挂载时出现"access denied by server while mounting"的解决方法 2015-01-14 何敏杰 3条评论 44,071次浏览 NFS是 ...
- SublimeText3 插件的使用和本身的配置
--------------------20180109----------------------- Part1:如何设置代码字体变大变小 1.点击菜单栏 Sublime Text 中prefere ...
- jquery的事件绑定on()动态绑定
常用 这里有个文章列表, 通过on() 点击标题获取标题内容 <div class="article"> <div class="title" ...
- 撩课-Java每天5道面试题第10天
撩课Java+系统架构 视频 点击开始学习 81.Servlet的会话机制? HTTP 是一种无状态协议, 这意味着每次客户端检索网页时, 都要单独打开一个服务器连接, 因此服务器不会记录下 先前客户 ...
- K:顺序表和链表的比较
顺序表和链表是线性表的两种基本实现形式(链表还有多种变化形式),对于这两种实现方式,没有一种方法可以称是最好的,他们各自有着各自的特点和优缺点,适用于不同的应用场景. 与顺序表相比,链表较为灵活, ...
- 深入理解Java虚拟机---类加载机制(简略版)
类加载机制 谈起类加载机制,在这里说个题外话,当初本人在学了两三个月的Java后,只了解了一些皮毛知识,就屁颠屁颠得去附近学校的招聘会去蹭蹭面试经验,和HR聊了一会后开始了技术面试,前抛出了两个简单的 ...
- Java 之常用API(一)
常用API 1 API概述 2 Scanner类与String类 3 StringBuilder类 NO.one API概述 1.1 API概述 API(Application Programm ...