.NET正则表达式

1、正则表达式是用来进行文本处理的技术,是 语言无关 的,在几乎所有语言中都有实现。 javascript 中还会用到。
2、 一个正则表达式就是由普通字符以及特殊字符 ( 称为 元字符 ) 组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
3、 就像通配符“* .jpg ”、“ % ab %” ,它是对字符串进行匹配的特殊字符串
4、 正则表达式是非常复杂的,不要希望一次都掌握,理解正则表达式能做什么(字符串的匹配、字符串的提取、字符串的替换),掌握常用的正则表达式用法,以后用到再查就行。
5、 找工作的亮点。后面项目中的采集器、敏感词过滤、 URLRewite Validator 也会涉及到正则表达式。

6、正则表达式是对字符串操作的

元字符
想学会正则表达式,理解元字符是一个必须攻克的难关。不用刻意记

1、 . :匹配除 \n 之外的任何 单个字符 。例如正则表达式“ b.g 能匹配如下字符串:“ big” 、“ bug” 、“ bg” ,但是不匹配“ buug ,“ b..g 可以匹配“ buug 。 
2、[] :匹配括号中的 任何一个 字符。例如正则表达式“ b[ aui ]g” 匹配 bug big bag ,但是不匹配 beg baug 。可以在括号中使用 连字符“ -” 来指定字符的区间 来简化表示,例如正则表达式 [0-9] 可以匹配任何数字字符,这样正则表达式“ a[0-9]c” 等价于“ a[0123456789]c” 就可以匹配“ a0c” 、“ a1c” 、“ a2c” 等字符串;还可以制定多个区间,例如“ [A- Za -z]” 可以匹配任何大小写字母,“ [A-Za-z0-9]” 可以匹配任何的大小写字母或者数字。
3、 :将两个匹配条件进行逻辑“或”运算。 z|food 能匹配 “z” “food” ‘( z|f ) ood 则匹配 zood “food” // 注意 ^$ 问题。
4、() :将 () 之间括起来的表达式定义为“组” (group) ,并且将匹配这个表达式的字符保存到一个临时区域 , 这个元字符在字符串提取的时候非常有用。把一些字符表示为一个整体。 改变优先级、定义提取组 两个作用。
 
5、*:匹配 0 至多个在它之前的子表达式,和通配符*没关系 。例如正则表达式“ zo *” (等同于 z(o)* )能匹配“ z” 、“ zo 以及“ zoo” ;因此“ .*” 意味着能够匹配任意字符串。 "z( b|c )*"→ zb zbc zcb zccc zbbbccc "z( ab )*" 能匹配 z zab zabab (用括号改变优先级)。
6、+ :匹配前面的子表达式 一次或多次 ,和*对比( 0 到多次 )。例如正则表达式 9+ 匹配 9 99 999 等。“ zo +” 能匹配“ zo 以及“ zoo” ,不能匹配 "z"
7、? :匹配前面的子表达式 零次或一次 。例如, “do( es )?” 可以匹配 “do” “does” 。一般用来匹配“可选部分”。( 终止贪婪模式
8、{n} :匹配确定的 n 次。 zo {2}”→zoo 。例如,“ e{2}” 不能匹配“ bed” 中的“ e” ,但是能匹配“ seed” 中的两个“ e” // seeeed , 不可以。
9、{n,}: 至少匹配 n 次。例如,“ e{2,}” 不能匹配“ bed” 中的“ e” ,但能匹配“ seeeeeeeed 中的所有“ e”
10、{ n,m } :最少匹配 n 次且最多匹配 m 次。“ e{1,3}” 将匹配“ seeeeeeeed 中的前三个“ e” {2,5}// bed,seed,seeed; beeeeed 错误。
 
限定符:限定前面的正则表达式出现的次数。
1、^ shift+6 ):匹配一行的 开始 。例如正则表达式“ ^regex” 能够匹配字符串“ regex 我会用”的开始,但是不能匹配“我会用 regex”
2、^ 另外一种意思:非!( [^0-9]
3、$ :匹配行结束符。例如正则表达式“浮云 $” 能够匹配字符串“一切都是浮云”的末尾,但是不能匹配字符串“浮云呀” 
4、^ abc , 匹配一个正则表达式的开始
abc jflkdsjfkdsjf
888$ ,匹配一个正则表达式的结束。
积分多少快乐解放路口的手机费 888
 
简写表达式
注意这些简写表达式是不考虑转义符的,这里的 \ 就表示字符 \ ,而不是 C# 字符串级别的 \ ,在 C# 代码中需要使用 @ 或者 \ 双重转义。区分 C# 级别的转移和正则表达式级别的转移, 恰好 C# 的转义符和正则表达式的转义符都是 \ 而已 。正则表达式的转义是在 C# 之后的(层层盘剥)。把 C# 的转义符想成 % 就明白了。在 C# 看来 @"\-" 就是 \- 这个普通的字符串,只不过在正则表达式分析引擎看来他有了特殊含义。 "\\d" 或者 @"\d"
\d :代表一个数字,等同于 [0-9]   \\d  →\d
\D :代表非数字,等同于 [^0-9]
\s :代表换行符、 Tab 制表符等空白字符 ,( 空格、回车、制表符 )
\S :代表非空白字符( a0%$@@
\w :匹配字母或数字或下划线或汉字,即能组成单词的字符 , %&#@!$ 等字符。
\W :非 \w ,等同于 [^\w]
d digital s space w word 。大写就是“非”
 
正则表达式在 .Net 就是用字符串表示,这个字符串格式比较特殊,无论多么特殊, C# 语言看来都是普通的字符串 ,具体什么含义由 Regex 类内部进行语法分析。
如何匹配 大于 10 小于 20 的字符串?(正则表达式是对字符串的操作。) ^ [1][1-9]$ 【11,12,13,14,15,16,17,18,19】 观察字符串!自己写正则表达式之前先仔细观察字符串。
正则表达式( RegularExpression )的主要类: Regex
常用 4 种情况:( C# 语法)
判断是否匹配: Regex. IsMatch ( 字符串 , 正则表达式 );
字符串提取: Regex .Match ( 字符串 , 要提取的字符串的正则表达式 );// 只能提取一个(提取一次)
字符串提取 ( 循环提取所有 ) Regex. Matches ( ) ,(可以提取所有匹配的字符串。)
字符串替换: Regex. Replace ( 字符串 , 正则 , 替换内容 );
 
Regex . IsMatch 方法用于判断一个字符串是否匹配正则表达式。
字符串匹配例子:

Regex.IsMatch("bbbbg","^b.*g$");

Regex.IsMatch("bg","^b.*g$");

Regex.IsMatch("gege","^b.*g$");

一定不能忘了^$,否则也能匹配yesbagit

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邹琼俊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值