正则表达式(理论篇)

维基百科

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

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

元字符

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

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

s         匹配任意的空白符

d         匹配数字

         匹配单词的开始或结束

^         匹配字符串的开始

$         匹配字符串的结束

转移字符()

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

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

限定符

*         重复零次或更多次

+         重复一次或更多次

?         重复零次或一次

{n}         重复n次

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

{n,m} 重复n到m次

从给定范围匹配([ ])

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

分支条件(|)

0d{2}-d{8}|0d{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这几个字母以外的任意字符

原文地址:https://www.cnblogs.com/luoxiaolei/p/6714921.html