PHP 正则表达式(2)
来源:未知 责任编辑:责任编辑 发表时间:2014-05-10 12:18 点击:次
3.3 特殊字符
所谓特殊字符,就是一些有特殊含义的字符,如上面说的"*.txt"中的*,简单的说就是表示任何字符串的意思。如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。ls \*.txt。正则表达式有以下特殊字符。
字符 | 说明 |
$ | 匹配输入字符串的结尾位置如果设置了RegExp 对象的Multiline 属性,则$ 也匹配'\n' 或'\r'要匹配$ 字符本身,请使用\$ |
() | 标记一个子表达式的开始和结束位置子表达式可以获取供以后使用要匹配这些字符,请使用\( 和\) |
* | 匹配前面的子表达式零次或多次要匹配* 字符,请使用\* |
+ | 匹配前面的子表达式一次或多次要匹配+ 字符,请使用\+ |
. | 匹配除换行符\n之外的任何单字符要匹配.,请使用\. |
[ | 标记一个中括号表达式的开始。要匹配[,请使用\[ |
? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配? 字符,请使用\? |
\ | 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。 |
^ | 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配^ 字符本身,请使用\^ |
{ | 标记限定符表达式的开始。要匹配{,请使用\{ |
| | 指明两项之间的一个选择。要匹配|,请使用\| |
3.4 限定符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{n}或{n,}或{n,m}共6种。*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。
正则表达式的限定符有:
特别字符 | 说明 |
* | 匹配前面的子表达式零次或多次。例如,zo* 能匹配"z" 以及"zoo"。* 等价于{0,} |
+ | 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配"zo" 以及"zoo",但不能匹配"z"。+ 等价于{1,} |
? | 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配"do" 或"does" 中的"do" 。? 等价于{0,1} |