ღ Miranda

正则表达式进阶

在上一篇正则表达式基础上介绍一些新的内容。

参数/gim

在一些正则表达式的结尾会加上/i,/g,/m这三个参数。


/g

参数g的意思是global,代表全局匹配,不加这个参数只会匹配第一个匹配的字段,一般返回一个数组。


/i

参数i的意思是ignore case,就是忽略大小写匹配。


/m

参数m的意思是multiline,表示可以进行多行匹配,但是这个只有当使用^和$模式时才会起作用,在其他的模式中,加不加入m都可以进行多行匹配。

^表示匹配开头,$表示匹配结尾,比如^beg匹配以beg开头的行,默认匹配的是第一行的开头,比如:

正则表达式/^beg/匹配第一行开头,要想匹配第一行和第三行,就要把表达式改为/^beg/gm,只加g或者m都不能匹配,另外,^beg$表示精确匹配,只能匹配如下:


贪婪模式与非贪婪模式

贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。

贪婪模式的表达式如\w+foo,尽可能多的匹配foo前的字符串:

非贪婪模式就是在量词后加?,表达式\w+?foo


{}字符

{n},n是一个非负整数,匹配确定的 n 次。例如,o{2}不能匹配 Bob中的o,但是能匹配food中的两个o。
{n,},n是一个非负整数,至少匹配n 次。例如,o{2,}不能匹配 Bob中的o,但能匹配foooood中的所有o。
{n,m},m和n均为非负整数,最少匹配 n 次且最多匹配 m 次,例如o{1,3}将匹配 fooooood中的前三个o。

空白字符匹配

\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]


最后推荐一个在线正则调试器http://regexr.com/

发表评论

电子邮件地址不会被公开。