
5.7 高手私房菜
技巧1:模式修饰符、单词界定符和方括号“[]”连用,而是和“/”在一起使用?
在PHP正则表达式的语法当中,一种是POSIX语法,一种是Perl语法。POSIX语法是先前所介绍的语法。Perl语法则不同于POSIX语法。Perl语法的正则表达是以“/”开头和以“/”结尾的,如“/name/”便是一个Perl语法形式的正则表达。
模式修饰符则是在Perl语法正则表示中的内容。比如“i”表示正则表达式对大小写不敏感,“g”表示找到所有匹配字符,“m”表示把目标字符串作为多行字符串进行处理,“s”表示把目标字符串作为单行字符串进行处理,忽略其中的换行符,“x”表示忽略正则表达式中的空格和备注,“u”表示在首次匹配后停止。
单词界定符也是Perl语法正则表示中的内容。不同的单词界定符表示不同的字符界定范围。比如以下单词界定符的表示意义为:
“\A”表示仅仅匹配字符串的开头。“\b”表示匹配到单词边界。“\B”表示除了单词边界,匹配所有。“\d”表示匹配所有数字字符,等同于“[0-9]”。“\D”表示匹配所有非数字字符。“\s”表示匹配空格字符。“\S”表示匹配非空格字符。“\w”表示匹配字符串,如同“[a-zA-Z0-9_]”。“\W”表示匹配字符,忽略下划线和字母数字字符。
技巧2:支持Perl语法形式的正则表达式有哪些?
PHP为Perl语法的正则表达方式提供了如下函数:
(1)preg_grep()用来搜索一个数组中的所有数组元素,以得到匹配元素。
(2)preg_match()以特定模式匹配目标字符串。
(3)preg_match_all()以特定模式匹配目标字符串,并且把匹配元素作为元素返回给一个特定数组。
(4)preg_quote()在每一个正则表达式的特殊字符前插入一个反斜杠“\”。
(5)preg_replace()替代所有符合正则表达式格式的字符,并返回按照要求修改的结果。
(6)preg_replace_callback()以键值代替所有符合正则表达式格式字符的键名。
(7)preg_split()按照正则模型切分字符串。