浏览 1354 次
锁定老帖子 主题:正则表达式之<四>重复匹配
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-06-11
(1)匹配一个或多个字符 在给定字符(或字符集合)后面加上一个+字符作为后缀,即可以匹配一个或多个字符(至少一个,不匹配零个字符)。 当‘+’‘.’在字符集合里使用,可以不转义,在普通字符中必须转义 tips: 在给一个字符集合加上+后缀的时候,必须把+放在字符集合的后面,比方说[0-9]+是正确的 ,[0-9+]则不是。 但是实际上[0-9+]也是一个合法的正则表达式,但他匹配的不是一个或者多个数字。他定义了一个由数字0-9和+构成的字符集合,因此只能匹配单个数字或加号。 (2)匹配零个或多个字符 在给定字符(或字符集合)后面加上一个*字符作为后缀,即可以匹配零个或多个字符 (3)匹配零个或一个字符 在给定字符(或字符集合)后面加上一个?字符作为后缀,即可以匹配零个或一个字符 ex: 如何表示:http://,https:// regex: https?:// 或者 http[s]?:// tips: ?等价于{0,1} +等价于{1,} 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?). 匹配结果: .的部分我们没有匹配起来,所以改成 [\w.]+@[\w.]+\.\w+ 结果 tips: [\w.]在集合中.不需要转义他的写法与[\w\.]是一样的。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |