C#正则表达式

Posted ogre程序猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#正则表达式相关的知识,希望对你有一定的参考价值。

01

正则表达式的基础梳理


字符 描述
\

转义字符,将一个具有特殊功能的字符转义为一个普通字符,或反过来

^
匹配输入字符串的开始位置
$ 匹配输入字符串的结束位置
* 匹配前面的 0次 或 多次 的子表达式
+ 匹配前面的 1次 或 多次 的子表达式
?
匹配前面的 0次 或 1次 子表达式
{n} n是一个非负整数,匹配前面的n次子表达式
{n,}

n是一个非负整数,至少匹配前面的n次

子表达式

{n,m}

m和n均为非负整数,其中n<=m,最少匹配

n次且最多

匹配m次

?

当该字符紧跟在其他限制符(*,+,?,{n},{n,m})

后面时,匹配模式尽可能少的匹配所搜索的

字符串

.
匹配除“\n”之外的任何单个
(pattern) 匹配pattern并获取这一匹配
(?:pattern) 匹配pattern但不获取匹配结果
(?=pattern)

正向预查,在任何匹配pattern的字符串开始处

匹配查找字符串

(?!pattern)

负向预查,在任何不匹配pattern的字符串开始

处匹配查找字符串

x|y

匹配x或y。例如:'z|food'能匹配“z”或“food”,

‘(z|f)ood’则匹配“zood”或“food”

[xyz]

字符集合。匹配所包含的任意一个字符。

例如:‘[abc]’可以匹配“plain”中的‘a’

[^xyz]

负值字符集合。匹配未包含的任意字符。

例如:‘[^abc]’可以匹配“plain”中的‘p’

[a-z]

匹配指定范围内的任意字符。

例如:‘[a-z]’可以匹配‘a’到‘z’范围内的任意

小写字母字符

[^a-z]

匹配不在指定范围内的任意字符。

例如:‘[^a-z]’可以匹配不在‘a’~'z'内的任意字符

\b
匹配一个单词边界,指单词和空格间的位置
\B
匹配非单词边界
\d
匹配一个数字字符,等价于[0-9]
\D
匹配一个非数字字符,等价于[^0-9]
\f
匹配一个换页符
\n
匹配一个换行符
\r
匹配一个回车符
\s

匹配任何空白字符,包含空格、制表符、

换页符等

\S
匹配非任何空白字符
\t
匹配一个制表符
\v
匹配一个垂直制表符。等价于\x0b和\cK
\w

匹配包括下划线的任何单词字符。

等价于'[A-Za-z0-9_]'

\W

匹配任何非单词字符。

等价于'[^A-Za-z0-9_]'

说明:由于正则表达式中“ \ ”、“ ? ”、“ * ”、“ ^ ”、“ $ ”、“ + ”、“(”、“)”、“ | ”、“ { ”、“ [ ”等字符已经具有一定特殊意义,如果需要用它们的原始意义,则应该对它进行转义。

02

Regex类常用的方法

静态Match方法

1

使用静态Match方法,可以得到源中第一个匹配模式的连续子串。

静态方法Macth的方法有两个重载,分别是


方法重载








01

Regex.Macth(string input, string pattern);

02

Regex.Macth(string input, string pattern, RegexOptions options);‍



参数说明








01

第一种重载的参数表示:输入、模式

02

第二种重载的参数表示:输入、模式、RegexOptions枚举的“按位或”组合


RegexOptions枚举的有效值是:

Complied表示编译此模式

CultureInvariant表示不考虑文化背景

ECMAScript表示符合ECMAScript,这个值只能和IgnoreCase、Multiline、Complied连用

ExplicitCapture表示只保存显式命名的组

IgnoreCase表示不区分输入的大小写

IgnorePatternWhitespace表示去掉模式中的非转义空白,并启用由#标记的注释

Multiline表示多行模式,改变元字符^和$的含义,它们可以匹配行的开头和结尾

None表示无设置,此枚举项没有意义

RightToLeft表示从右向左扫描、匹配,这时,静态的Match方法返回从右向左的第一个匹配

Singleline表示单行模式,改变元字符.的意义,它可以匹配换行符


注意:Multiline在没有ECMAScript的情况下,可以和Singleline连用。Singleline和Multiline不互斥,但是和ECMAScript互斥。


静态的Matchs方法

2

这个方法的重载形式同静态的Match方法,返回一个MatchCollection,表示输入中,匹配模式的匹配的集合。

静态的IsMatch方法

3

此方法返回一个bool,重载形式同静态的Matches,若输入中匹配模式,返回true,否则返回false。

可以理解为:IsMatch方法,返回Matches方法返回的集合是否为空。


以上是关于C#正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

c# 正则表达式笔记

C# 正则表达式 Replace的功能

C#中正则表达式的使用

C#中正则表达式的使用

C# 正则表达式使用方法

C#正则表达式指定替换