正则表达式总结

来源:互联网 发布:解析的域名怎么弄 编辑:程序博客网 时间:2024/06/09 23:37

正则表达式的支持由PCRE库软件包提供。下列特殊字符只适用于“匹配正则表达式”和“搜索替换字符串”函数。“匹配模式”函数使用另一套数量较少的正则表达式,但执行速度比“匹配正则表达式”函数快。

正则符号分为字符类、限定符、分组等几种。

可以匹配字符类:.(句点)、\w匹配字母、\W匹配非字母、\d匹配数字、\D匹配非数字、\r回车、\n换行、\f置页符、\t制表符、\s非空白字符等。

\w:等同于[a-zA-Z0-9_]

\b:指空格、标点、换行符这些字符所在位置,并不匹配字符

.:匹配除新行符\n(换行符)之外的任何单个字符。如置于方括号内,.表示文本句点。

限定符:*0次以上匹配、+1次以上匹配、?01次匹配(在其他限定符前表示非贪婪)、{n,N}n到N次匹配等。

分组和锚:[]匹配集合中任意字符(^-\)、()子匹配(先外层)、|分割匹配(只会返回第一个匹配成功的)、^匹配字符第一个表示从串开始匹配([]中表示不包含)、$匹配字符最末表示从串结束匹配、\匹配特殊限定字符,如$(与转义区别)

 

捕获:

(exp)        匹配exp,并捕获文本到自动命名的组里

(?<name>exp)  匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)

(?:exp)            匹配exp,不捕获匹配的文本,也不给此分组分配组号;()默认情况下会将其中exp匹配的内容捕获到组里

 

零宽断言:

(?=exp)        匹配exp前面的位置

(?<=exp)       匹配exp后面的位置

(?<!exp)       匹配前面不是exp的位置

(?!exp)         匹配后面跟的不是exp的位置

 

注释:

(?#comment)  这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

要特别注意的是,零宽断言是不占用位置的,也就是说,匹配结果里是不会返回它的。

 

后向引用:

使用后向引用,可在同一正则表达式中指代已出现的子匹配。例子:(["*$])(\w+)\1\2\1

可以匹配"foo"foo"、*bar*bar*。

 

 “匹配正则表达式”函数

输入字符串、正则表达式不支持空字符,即\s,包含空格、换行、制表符、回车等等。经测试,输入字符串正常读入

.句点不可以匹配换行符

“搜索替换字符串”函数

1、“搜索替换字符串”函数不支持字符串中包含空字符。但是实际测试,似乎没问题

2、替换字符串输入端适用下列特殊字符:$n、${n}表示第n个子匹配字符。n大于9只能用后一种表示方法

“匹配模式”函数

仅支持如下匹配字符:.、+、*、^、$、\、[]、?;不支持零宽断言、不支持\b等类似情况、不支持括号()和竖直线(|)等;

可以包含空格;

搜索+可以使用[+];

使用字符常量传入字符串,可以识别空白字符\s;

匹配模式中.句点可以匹配换行符

 

 

以上函数只能返回字符串中第一个匹配到的字符,当有多个可匹配的字符,第一个之后的字符无法匹配。可以采用循环不断匹配剩下的字符串。

 

 

 

 

 

0 0
原创粉丝点击