一文掌握.NET正则表达式

基础字符、转义字符与定位字符

代码说明
.匹配除换行符(\n)以外的任意字符
\w匹配字母(a-z,A-Z)、数字(0-9)、下划线(_)、汉字
\W匹配任意不是字母、数字、下划线、汉字的字符
\s匹配任意的空白符(等价于[ \f\n\r\t\v])
\S匹配任意不是空白符的字符(等价于[^ \f\n\r\t\v])
\d匹配数字([0-9])
\D匹配任意非数字的字符([^0-9])
[abc]匹配a、b、c任何一个
[^abc]匹配除了a、b、c以外的任意字符
[a-z]匹配所有小写字母
[^a-z]匹配非所有小写字母
[a-z0-9A-Z]匹配所有字母和数字
[^a-z0-9A-Z]匹配所有不是字母和数字的字符
[set1-[set2]]字符减法表达式(比如:[a-z-[mnx]],表除mnx外的所有小写字母),set可以是正字符组或负字符组
\f换页符(Form feed)
\n换行符(Newline)
\r回车符(Return)
\t制表符(Tab)
\v垂直制表符(Vertical return)
*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次
*?重复零次或更多次,但尽可能少重复
+?重复一次或更多次,但尽可能少重复
??重复零次或一次,但尽可能少重复
{n,}?重复n次或更多次,但尽可能少重复
{n,m}?重复n到m次,但尽可能少重复
\A匹配必须出现在字符串的开头(输入:a88 b99 c666,则\w+匹配三组,\A\w+则只匹配a88,\w+\Z则只匹配c666)
\Z匹配必须出现在字符串的末尾或出现在字符串末尾的 \n 之前
\z匹配必须出现在字符串的末尾
\G匹配必须在上一个匹配结束的位置进行;如果以前没有匹配项,则从开始进行匹配的字符串中的位置开始。
\b匹配必须出现在 \w 和 \W 字符之间的边界上,如果用在中括号[\b]中,则表示Backspace退格键字符。
\B匹配不得出现在 \b 边界上
^默认情况下,必须从字符串的开头开始匹配;在多行模式中,必须从该行的开头开始。
$默认情况下,匹配必须出现在字符串的末尾,或者出现在输入字符串末尾的 \n 之前。

替换结构

代码说明
$number替换按组 number匹配的子字符串。
${name}替换按命名组 name匹配的子字符串。
$$替换字符"$"
$&替换整个匹配项的一个副本。
$`替换匹配前的输入字符串的所有文本。
$’替换匹配后的输入字符串的所有文本
$_替换整个输入字符串。

分组结构

代码说明
(subexpression)编号组,同一正则表达式中可以用\1\2,…来依次引用,用$1$2,…来替换
(?<name>subexpression)命名组,同一正则表达式中可以用\k<name>来引用 ,替换结构中使用${name}来替换
(?'name'subexpression)命名组,同一正则表达式中可以用\k<name>来引用 ,替换结构中使用${name}来替换
(?:subexpression)非捕获组,避免分组被捕获
(?>subexpression)原子组(原子组不回溯,合理使用可以提升正则表达式执行引擎的性能。)
(?<=subexpression)前面有什么(对于输入a,b,c,模式(?<=,)\w)可以匹配bc,因为a前面没有逗号
(?<!subexpression)前面没什么(对于输入a,b,c,模式(?<!,)\w)可以匹配a,因为bc前面有逗号
(?=subexpression)后面有什么(对于输入a,b,c,模式\w(?=,))可以匹配ab,因为c后面没有逗号
(?!subexpression)后面没什么(对于输入a,b,c,模式\w(?!,))可以匹配c,因为ab后面有逗号

either/or结构

格式:exp1|exp2
示例:(i|you) love (high|short) man
注意:[]只能取单个字符,|能取多个字符。

条件匹配的表达式

格式:(?(expression)yes)(?(expression)yes|no)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值