C#字符串正则表达式基础语法
2021-03-14 06:29
标签:cas 条件 通过 多个 blank multi 位置 href 说明 原文 C#字符串正则表达式基础语法 正则表达式是个非常好的工具,它的作用主要是用简单的有规则的表达式来检索和匹配一段字符串。 1、匹配 为了更好的测试正则表达式的规律我们可以采用正则表达式工具。RegEx Buddy。 (3)\s (4)\d good\b \bgood\b (6)\W (10)[^x] (11)[^good] 2、转义匹配 3、实例 1、 二、正则表达式中几种重复模式 1、* 2、+ 3、? 4、{n} 5、{n,} 6、{n,m} 三、正则表达式中分支条件 如果匹配模式包含多种,只要满足其中一种即可的话。就将多种表达式中间用|符号隔开,即使或的意思。 四、正则表达式字符类 首先提个概念: 常用字符类说明: 又如下: 固上面的正则表达式的意思为: 五、正则表达式的分组概念&贪婪与懒惰概念 1、分组 (1)将子表达式做成子集 2、贪婪和懒惰 (1)*? 重复任意次,但是尽可能少 (2)懒惰 (尽可能的少) 六、处理选项 1、IgnoreCase 2、Multiline 3、Singleline 4、IgnorePatternWhitespace 5、ExplicitCapture 七、负向0宽断言 例如:查找这样一个单词–它里面出现了字母q但是后面不能跟u C#字符串正则表达式基础语法 标签:cas 条件 通过 多个 blank multi 位置 href 说明 原文地址:https://www.cnblogs.com/lonelyxmas/p/12503537.htmlC#正则表达式基础语法
所以正则表达式的作用大致有两种:
2、检索
一、正则表达式基础知识
1、元字符的概念和元字符的反义
(1) 点(.)
表示匹配除了换行符意外的任意单个字符。
(2)\w
表示匹配数字,字母,下划线,汉字等单个字符
如上,空格和标点符号和斜杠都没有匹配上。其余都匹配上了
匹配任意空白单个符
如上,所有空格被匹配上了。其余没有
匹配单个数字
(5)\b
匹配单词的开始或结束
\bgood
与\w是反义,即\W匹配的是任意不是字母,数字,下划线或汉字的单个字符
(7)\S
与\s是反义,即\S匹配任意不是空白的单个字符,换行符也算是空白
(8)\D
与\d是反义,即\D匹配的是任意不是数字的单个字符
(9)\B
与\b是反义,即\B匹配的是任意不是单词开头或结束的字符
\Bgood
上述结果刚好和\b相反
匹配除了x意外的任意单个字符
[^2]
上述结果除了2外其他全部匹配上了。
匹配除了good字母外外的任意单个字符
(12)^和$
表示字符串的开头或者字符串的结尾。
例如:
^a?ld&
表示的是匹配一个字符串其开头有或者没有a字符,但后面肯定紧跟着ld并结束的字符串。
所以ald、old、cld、eld、都可匹配
adalde不可匹配,因为ald在中间,前面不是开始,后面也不是结束
以‘.’符号为例,上述我们提及到了‘.’匹配的是任意不为空的字符。但是如果我们就是想要匹配‘.’怎么办?
解决办法就是加上.即可。
I am a Apple,the old is 16.
ald
bld
cld
eld
fld
gld
ld
问:找出上述字符串中的所有包含ld的单词
答:^.?ld$
解析:
‘.’表示匹配所有不为空的单个字符
‘?’与‘.’搭配表示有或者没有即0或1都可的意思
ld表示匹配中含有这两个字母
^和$表示匹配的开始和结束
注意:第一句中的old不会匹配,因为它并不是开始位置,不符合^的约束
指的是重复零次或更多次
指的是重复一次货更多次
指的是重复一次或零次
指的是重复n次
指的是重复n次或更多次
指的是重复n到m次,例如{2,4}即2个到4个均可以。
如下:
0\d{2}-\d{8}|0\d{3}-\d{8}
以上两种表达式只要满足其中一种即可。值得注意的是,会存在短路现象。
[]的作用是表示一个范围。
例如:
[aeiou]表示aeiou都可以
[0-4]表示01234这几个字符
1、[0-9]\d 表示单个数字字符
2、[a-z0-9A-Z]\w 表示数字,字母汉字等
3、[aeiou] 表示aeiou都可以
(?0\d{2}[)-]?\d{8}
其中(代表‘(’这个字符,前面的\是转义的意思
匹配一个字符串,其中开头可能有(也可能没有,接着后面固定为0开头的共三位数字,接着有或者没有)或者-,最后又8个数字。
它的目的就是匹配前三个数字带括号或者中间带-的号码。
(2)使用()进行分组
(3)方便对match的字符串进行划分
(4)分组的命名:(?exp)
(5)(?:exp)
(6)(\d{1,3}.){3}\d{1,3} IP地址的匹配
(2)+?重复1次或更多次,但尽可能少
(3)??重复0次货
(1)贪婪 (尽可能的多)
a.*b表示匹配第一个字符为a,最后一个为b中间有0个或很多个任意非空字符。
所以aabab的结果为aabab
a.*?b表示匹配第一个字符为a,最后一个字符为b,中间可能有多个任意非空字符可能没有。其中?是与*匹配的,这样的结果就是要么只有一个任意非空字符,要么有多个非空字符。
所以aabab的结果为aab,因为aab满足中间有一个字符。按照就
匹配时不区分大小写
更改^和$的含义,使他们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。
通常来说^和$有两个可选择的含义,一个是一个连串的单词的首和尾,
一个是一整行的首和尾,通过Multiline可以改变他们的含义,使之面向的是一整行的首和尾。
更改.的含义,使它与每一个字符匹配(包括换行符\n)
忽略表达式中的非转义空白并启用由#标记的注释
仅补货已被显示命名的组
表达式1:
\b\w*[^u]\w*\b
上一篇:如何用C#从底层编写文本编辑器
下一篇:C#下实现动态系统托盘图标