当前位置:首页 > Windows程序 > 正文

C#的正则表达式Regex

2021-05-26 Windows程序

C#regex是正则表达式类
用于string的处理,查找匹配的字符串。
1,先看一个例子
Regex regex=new Regex(@”yOK“);//我们要在目标字符串中找到"OK"
Match m=regex.Match("fjsladfyOK");
console.writeline(m.tostring());//这是查找yOK
//结果是:yOK
2,
Regex regex=new Regex(@"\d+");//      \d+是代表数字
Match m=regex.Math("jflsadkj  98");
console.writeline(m.tostring);//结果为98
3,关键为如何写特殊字符
”\w+"代表字母  "\W+"代表字符   "\s+" 代表空格   "$"代表字符串结束了
4,

关于零宽度断言有多种叫法,也有叫环视、也有叫预搜索的,我这里采用的是 MSDN 中的叫法,关于零宽度断言有以下几种:

(?= 子表达式 ): 零宽度正预测先行断言。仅当子表达式在此位置的右侧匹配时才继续匹配。例如, 19(?=99) 与跟在 99 前面的 19 实例匹配。

(?! 子表达式 ): 零宽度负预测先行断言。仅当子表达式不在此位置的右侧匹配时才继续匹配。例如, (?!99) 与不以99 结尾的单词匹配,所以不与 1999 匹配。

(?<= 子表达式 ): 零宽度正回顾后发断言。仅当子表达式在此位置的左侧匹配时才继续匹配。例如,, (?<=19)99与跟在 19 后面的 99 的实例匹配。此构造不会回溯。

(?<! 子表达式 ): 零宽度负回顾后发断言。仅当子表达式不在此位置的左侧匹配时才继续匹配。例如 (?<!19) 与不以 19 开头的单词匹配,所以不与 1999 匹配。

eg:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace 正则表达式
{
class Program
{
static void Main(string[] args)
{
string p = @"(^\[)([a-z]{1})(\d+)([a-z])(\s+)(?=\])";
string text = "[s434b ]jf";
Regex regex = new Regex(p, RegexOptions.IgnoreCase);
MatchCollection mc = regex.Matches(text);
foreach (Match ma in mc)
{
for (int k = 0; k < ma.Groups.Count; k++)
{
Console.WriteLine("match  groud{0} :{1}", k, ma.Groups[k].Value);
}
}
Console.Read();

}
}
}
搜索出来的结果并没有“】” ,所以这个就说明“零宽度断言”仅仅是个条件

5,

正则表达式元字符

正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理 能力。元字符既可以是放在 [] 中的任意单个字符(如 [a] 表示匹配单个小写字符 a ),也可以是字符序列(如 [a-d] 表示匹配 a 、 b 、 c 、 d 之间的任意一个字符,而 \w 表示任意英文字母和数字及下划线),下面是一些常见的元字符:

元字符

 

说明

 

.

 

匹配除 \n 以外的任何字符(注意元字符是小数点)。

 

[abcde]

 

匹配 abcde 之中的任意一个字符

 

[a-h]

 

匹配 a 到 h 之间的任意一个字符

 

[^fgh]

 

不与 fgh 之中的任意一个字符匹配

 

\w

 

匹配大小写英文字符及数字 0 到 9 之间的任意一个及下划线,相当于 [a-zA-Z0-9_]

 

\W

 

不匹配大小写英文字符及数字 0 到 9 之间的任意一个,相当于 [^a-zA-Z0-9_]

 

\s

 

匹配任何空白字符,相当于 [ \f\n\r\t\v]

 

\S

 

匹配任何非空白字符,相当于 [^\s]

 

\d

 

匹配任何 0 到 9 之间的单个数字,相当于 [0-9]

 

\D

 

不匹配任何 0 到 9 之间的单个数字,相当于 [^0-9]

 

[\u4e00-\u9fa5]

 

匹配任意单个汉字(这里用的是 Unicode 编码表示汉字的 )

 

正则表达式限定符

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/71575.html