1、有多少个匹配
(1)匹配一个或多个字符
在给定字符(或字符集合)后面加上一个[color=darkred][b]+[/b][/color]字符作为后缀,即可以匹配一个或多个字符(至少一个,不匹配零个字符)。
[b][color=darkred]当‘+’‘.’在字符集合里使用,可以不转义,在普通字符中必须转义[/color][/b]
tips:
在给一个字符集合加上+后缀的时候,必须把+放在字符集合的后面,比方说[0-9]+是正确的
,[0-9+]则不是。
但是实际上[color=red][b][0-9+][/b][/color]也是一个合法的正则表达式,但他匹配的不是一个或者多个数字。他[color=red][b]定义了一个由数字0-9和+构成的字符集合,因此只能匹配单个数字或加号[/b][/color]。
(2)匹配零个或多个字符
在给定字符(或字符集合)后面加上一个[color=darkred][b]*[/b][/color]字符作为后缀,即可以[color=red][b]匹配零个或多个字符[/b][/color]
(3)匹配零个或一个字符
在给定字符(或字符集合)后面加上一个[color=darkred][b]?[/b][/color]字符作为后缀,即可以[b][color=red]匹配零个或一个字符[/color][/b]
ex:
如何表示:http://,https://
regex:
https?:// 或者 http[s]?://
tips:
[color=red][b]
?等价于{0,1}
+等价于{1,}[/b][/color]
2、匹配的重复次数
使用{和}字符来给出需要匹配的重复次数——把数值写在{}之间
{}也是元字符,需要转义
(1)为重复匹配次数设定一个精确的值:ex:{3} 重复3次
(2)为重复匹配次数设定一个区间:ex:{2,4} 最少2次,最多4次
(3)匹配至少重复多少次:ex:{3, } 最少重复3次
3、防止过度匹配
在 *, +, {n,},后加上?,就可以变成最少匹配。
先来盘鲜果--上案例:如何构造一个电子邮件的正则表达式?
text@text.text
开始你可能会写成这样:
\w@\w\.\w
这种写法没有任何实际的用处,因为它只能匹配a@b.c形式的电子邮件。只有单个字符嘛。
于是我们改成这样
\w+@\w+\.\w+
匹配结果:
[img]http://dl2.iteye.com/upload/attachment/0085/3295/89ecd5d5-67f3-3ffe-a41f-a25d9c1cc6b4.png[/img]
.的部分我们没有匹配起来,所以改成
[\w.]+@[\w.]+\.\w+
结果
[img]http://dl2.iteye.com/upload/attachment/0085/3293/b2d6c312-737c-3778-bc4f-52815c08f3c5.png[/img]
tips:
[color=red][b][\w.][/b][/color]在集合中.不需要转义他的写法与[color=red][b][\w\.][/b][/color]是一样的。
(1)匹配一个或多个字符
在给定字符(或字符集合)后面加上一个[color=darkred][b]+[/b][/color]字符作为后缀,即可以匹配一个或多个字符(至少一个,不匹配零个字符)。
[b][color=darkred]当‘+’‘.’在字符集合里使用,可以不转义,在普通字符中必须转义[/color][/b]
tips:
在给一个字符集合加上+后缀的时候,必须把+放在字符集合的后面,比方说[0-9]+是正确的
,[0-9+]则不是。
但是实际上[color=red][b][0-9+][/b][/color]也是一个合法的正则表达式,但他匹配的不是一个或者多个数字。他[color=red][b]定义了一个由数字0-9和+构成的字符集合,因此只能匹配单个数字或加号[/b][/color]。
(2)匹配零个或多个字符
在给定字符(或字符集合)后面加上一个[color=darkred][b]*[/b][/color]字符作为后缀,即可以[color=red][b]匹配零个或多个字符[/b][/color]
(3)匹配零个或一个字符
在给定字符(或字符集合)后面加上一个[color=darkred][b]?[/b][/color]字符作为后缀,即可以[b][color=red]匹配零个或一个字符[/color][/b]
ex:
如何表示:http://,https://
regex:
https?:// 或者 http[s]?://
tips:
[color=red][b]
?等价于{0,1}
+等价于{1,}[/b][/color]
2、匹配的重复次数
使用{和}字符来给出需要匹配的重复次数——把数值写在{}之间
{}也是元字符,需要转义
(1)为重复匹配次数设定一个精确的值:ex:{3} 重复3次
(2)为重复匹配次数设定一个区间:ex:{2,4} 最少2次,最多4次
(3)匹配至少重复多少次:ex:{3, } 最少重复3次
3、防止过度匹配
在 *, +, {n,},后加上?,就可以变成最少匹配。
先来盘鲜果--上案例:如何构造一个电子邮件的正则表达式?
text@text.text
开始你可能会写成这样:
\w@\w\.\w
这种写法没有任何实际的用处,因为它只能匹配a@b.c形式的电子邮件。只有单个字符嘛。
于是我们改成这样
\w+@\w+\.\w+
Send personal email to ben@forta.com or
ben.forta@forta.com. For questions about a
book use support@forta.com. If your message
is urgent try ben@urgent.forta.com. Feel
free to send unsolicited email to
spam@forta.com (wouldn't it be nice if it
were that simple,huh?).
匹配结果:
[img]http://dl2.iteye.com/upload/attachment/0085/3295/89ecd5d5-67f3-3ffe-a41f-a25d9c1cc6b4.png[/img]
.的部分我们没有匹配起来,所以改成
[\w.]+@[\w.]+\.\w+
结果
[img]http://dl2.iteye.com/upload/attachment/0085/3293/b2d6c312-737c-3778-bc4f-52815c08f3c5.png[/img]
tips:
[color=red][b][\w.][/b][/color]在集合中.不需要转义他的写法与[color=red][b][\w\.][/b][/color]是一样的。