正则表达式中问号的作用
下表给出了各种限定符及其含义的说明:
| 字符 | 描述 |
|---|---|
| * | 匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。 * 等价于{0,}。 |
| + | 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。 |
| ? | 匹配前面的子表达式零次或一次。例如,”do(es)?” 可以匹配 “do” 或 “does” 中的”do” 。? 等价于 {0,1}。 |
| {n} | n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。 |
| {n,} | n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。’o{1,}’ 等价于 ‘o+’。’o{0,}’ 则等价于 ‘o*’。 |
| {n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。刘, “o{1,3}” 将匹配 “fooooood” 中的前三个 o。’o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。 |
*,+,? 在正则表达式中都是贪婪的,换句话说,他们就是尽可能多的匹配,但往往这样不是我们想要的。比如取链接,href=”(.*)” 这段代码他取到的是第一个引号至最后一个引号的内容,也可以说是整篇内容了,并没有取出一条条的链接,如果换成这样 href=”(.*?)” 效果就完全不一样了。
这儿我推荐个绿色小巧的正则测试软件: /wp-content/uploads/RegexTest1.0.rar
上一篇: 自动采集IDC名录从IDC圈网站中
下一篇: 设置服务器自动重启办法
目前这篇文章有7条评论(Rss)