首页 > 代码库 > 自整理正则表达式用法

自整理正则表达式用法

下面的统称为元字符

. 匹配除\n(换行)之外的任意的单个字符
a.b可以是axb , a8b ...

[] 字符组,匹配中括号中的任意单个字符
a[aeoujf]b 表示,a和b直接之间的单个字符只能是aeoujf中的任意一个字符
a[0123456789]b 之前优化之后 a[0-9]b a和b之间0-9的任意单个字符
a[a-zA-z]b a和b之间出现a-z之间(不区分大小写)的任意单个字符
a[a-zA-Z0-9]b 不言而喻...
a[axz.]b 当.出现在中括号中就失去了通配符的意义,这时就表示一个普通的点

| 表示或的意思,优先级非常低,最后才计算它
a(x|y)b 表示a和b之间不是x就是y,()表示优先级
z|food z或者是food
(z|f)ood zood或者是food,

()含义:1.改变优先级;2.提取组(分组)

{n}  表示前面的表达式必须出现n次
{n,} 表示前面的表达式至少出现n次,最多无限次
{n,m} 表示至少出现n次,最多出现m次(n-m次)
a[a-z]{3}b  表示a和b之间匹配3次a-z

-----------限定符-----------
* 表示(前单个字符或者单个表达式)出现0次或多次{0,}
+ 表示(前单个字符或者单个表达式)出现1次或更多次{1,}
? 表示(前单个字符或者单个表达式)出现0次或1次{0,1}  ?的另外一个意思是:终止贪婪模式
colou?r  表示u出现或不出现
(colou)?r 表示colou出现或不出现

--------^与$--------

^ 表示字符串的开始(叫法shirt6)  还表示非!
^hello 表示字符串必须是以hello开头,或者说必须是以h开头,后面是ello
a[^0-9a-zA-Z(&]b 表示a和b之间除了0-9,a-z,A-Z,(,&都行

$ 表示字符串的结束
a$ 表示字符串的结束必须是a

-------简写表达式--
\d 表示[0-9] 全角的数字(不是正常的0-9)
a[0-9]b
a\db \d 表示0-9

\D 表示[^0-9]
\s 表示所有空白符 全角的空格
\S 表示^\s
\w 表示[a-zA-Z0-9_] 也匹配所有的汉字由于.net默认才用uniconde方式来匹配,所以\w也可以匹配所有汉字
\W 表示[^a-zA-Z0-9_]
\b 表示单词的边界(单词两边没有字符,和所有\W)  字符类中,\b表示退格符.在替换模式中,\b始终表示退格符
hello,welcome to our conutry.thanks

[\s\S]任意字符
[\w\W]任意字符

对于元字符、限定符等,如果要匹配字符本身都需转义(在最前面加一个\就OK)
\* \+ \. \[ \- \{2,3} \\d 等

忽略所有的元字符,类似与C#中的@符号
string s = Regex.Escape(@"\d{5,7}");


身份证号码(15或18)两种都可以,但是明显第二种好:
^([1-9][0-9]{14}|[1-9][0-9]{16}[0-9Xx])$
^[1-9][0-9]{14}([0-9]{2}[0-9Xx])?$

 

自整理正则表达式用法