正则表达式

正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

创新互联是一家专业提供那曲企业网站建设,专注与成都网站制作、成都网站设计、外贸营销网站建设HTML5建站、小程序制作等业务。10年已为那曲众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

(说人话就是匹配字符串的简便方法)

本文采用regex101进行测试

限定符(Quantifier)

1) :即匹配该符号前的字符出现0次或者1次的文本

use出现 'use' 字符且 'd' 未出现即匹配成功,used出现'use' 字符且 'd' 出现一次也匹配成功。

2) * 即匹配该符号前的字符出现0次或者多次的文本

'p'字符出现多次则apple和apply匹配成功,未出现则allow匹配成功。两种情况前后均有'a'和'l'字符。

3)+即匹配该符号前的字符出现1次或者多次的文本

p字符出现1次和多次的apple、apply匹配成功。


4){ } :即匹配该符号前的字符出现花括号内范围的文本(共三种情况)

{n} :匹配出现n次的字符

{n,m} :匹配出现n次到m次的字符

{n,} :匹配出现n次即以上的字符

或运算符(OR Operator)

1)(a|b):即匹配a或者b的文本

先匹配"a "的情况再匹配后面是person或者dog的情况

字符类(Character Classes)

1)[abc] :即匹配包含abc的文本 (通常与+一起使用)

包含'a' 'b' 'c' 字符的文本均匹配成功

2[a-zA-Z]:即匹配a到z和A-Z的文本 (即匹配所有英文字符)

3[^a-z]:即匹配不包含a到z的文本 (^代表除后续范围的匹配情况)


元字符类(Meta-characters)

\d :匹配数字字符

\D:匹配非数字字符

\w :匹配单词字符(英文、数字、下划线)

\s :匹配空白符(包含换行符、Tab)

.:匹配任意字符(换行符除外)

^ :匹配行首

$ :匹配行尾

贪婪/懒惰匹配(Greedy / Lazy Match)

* + {} 默认会去匹配尽可能多的字符

例如我们想匹配html标签 此时便为贪婪匹配,'.+'会尽可能多的去匹配字符。

解决方法便是<.+?>将贪婪匹配转化为懒惰匹配

例题实例:

1. RGB颜色值匹配

首先#进行查询,然后[]选取可能出现的a到f、A到F、0到9的可能字符,{}确定长度大小为6,最后使用\b确定边界避免未设置边界长度的#aaaaaaaa也匹配成功。

2. IPv4地址匹配

由于ip地址分四段,故我们可以使用\d+\.\d+\.\d+\.+\d+进行匹配:\d+会匹配任何长度大于1的数字,\. 代表转义后的 .

但此时匹配的结果不符合,由于ip地址需在0到255之间。观察ip地址的每一部分(共四部分)

三位数情况:

若前两位为25则第三位为0到5之间的数。

若第一位的数字为2,则第二位为0到5之间的数且第三位为0到9之间的数字即任意数字。

若第一位为0或者1,则第二位和第三位均可以为0到9间的数字即任意数字。

两位数和一位数的情况则均为任意数字即可,故在第一位为01的三位数情况的首位和末位加?代表是否存在

使用\.进行转义匹配.的情况并设置{3}匹配三次

最后在进行一次无.的匹配

在首位加\b确定边界即匹配完成


文章标题:正则表达式
文章分享:http://pwwzsj.com/article/dsojjsg.html