首页 > 代码库 > 正则表达式(理论篇)

正则表达式(理论篇)

维基百科

正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。

许多程序设计语言都支持利用正则表达式进行字符串操作。

元字符

.         匹配除换行符以外的任意字符

\w         匹配字母或数字或下划线或汉字

\s         匹配任意的空白符

\d         匹配数字

\b         匹配单词的开始或结束

^         匹配字符串的开始

$         匹配字符串的结束

转移字符(\)

如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你应该使用\.和\*。当然,要查找\本身,你也得用\\.

例如:deerchao\.net匹配deerchao.net,C:\\Windows匹配C:\Windows。

限定符

 

*         重复零次或更多次

+         重复一次或更多次

?         重复零次或一次

{n}         重复n次

{n,}          重复n次或更多次

{n,m} 重复n到m次

从给定范围匹配([ ])

例如:[abc]就匹配任何一个英文字母

分支条件(|)

0\d{2}-\d{8}|0\d{3}-\d{7}红色和绿色只匹配一种,如果直接匹配到红色,则会将绿色短路,所以此处要注意顺序

分组

可以用小括号来指定子表达式(也叫做分组)

例如:(\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:\d{1,3}匹配1到3位的数字,(\d{1,3}\.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(\d{1,3})。

反义

有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义。

\W         匹配任意不是字母,数字,下划线,汉字的字符

\S         匹配任意不是空白符的字符

\D         匹配任意非数字的字符

\B         匹配不是单词开头或结束的位置

[^x]         匹配除了x以外的任意字符

[^aeiou] 匹配除了aeiou这几个字母以外的任意字符

正则表达式(理论篇)