6.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语法的正则表达方式提供了如下函数:
•preg_grep():用来搜索一个数组中的所有数组元素,以得到匹配元素。
•preg_match():以特定模式匹配目标字符串。
•preg_match_all():以特定模式匹配目标字符串,并且把匹配元素作为元素返回给一个特定数组。
•preg_quote():在每一个正则表达式的特殊字符前插入一个反斜杠“\”。
•preg_replace():替代所有符合正则表达式格式的字符,并返回按照要求修改的结果。
•preg_replace_callback():以键值替代所有符合正则表达式格式字符的键名。
•preg_split():按照正则模型切分字符串。