正则表达式3____重复匹配

正则表达式的重复匹配

1.  匹配一个或多个字符,要想匹配同一个字符(或字符集合)的多次重复,只要简单地给这个字符(或字符集合)加上一个+字符作为后缀就可以了

    +匹配一个或多个字符,至少一个,不匹配0个字符

注: +是一个元字符,如果需要匹配+本身,必须使用它的转义序列\+

一个例子:

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+

结果:

Send personal email to ben@forta.com  orben.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  tospam@forta.com  (wouldn't  it be nice  if it were  that  simple , huh?)

如果 正则表达式为 \w+@\w+\.\w+: 会出现这样问题: 只考虑到在@字符的后面会有.字符,没有考虑到@之前会有.字符, \w只能匹配字母数字和下划线,不能匹配.字符

注意:在[\w.]没有对.字符进行转义,尽管如此,原始文本里的.字符匹配出来了,一般来说,当在字符集合里使用的时候,像.和+等元字符将被解释成普通字符, 不需要转义,但转义也是可以的, [\w.] 和[\w\.] 的使用效果是一样的,在这里要匹配邮件地址,这里允许.字符开头(在实际应用中是错的),.字符是电子邮件地址的合法字符,但是用作邮件地址的第一个字符就不合法了

匹配0个或多个字符

要匹配一个可有可无的字符,需要用*元字符

看一个例子

Hello .ben@forta.com is my email address

正则表达式 \w+[\w.]*@[\w.]+\.\w+

结果 : Hello .ben@forta.com is my email address

另外需要注意的是,*与+的区别是:  + 匹配一个或多个字符(或字符集合),最少要匹配一次, *匹配 0个或多个字符,可以没有匹配,如果需要匹配* 本身,必须使用它的转义序列\*.

匹配 0 或 1 个字符,需要用到?

如果需要在一段文本里匹配某个特定的字符(或字符集合)而该字符可能出现、也可能不出现,?无疑是最佳的选择

到现在,需要仔细体会+,*,?的异同点

先看一个例子

The URL is Ben Forta,  to connect securely use Ben Forta  instead.

正则表达式  http://[\w./]+

结果:  The URL is Ben Forta,  to connect securely use Ben Forta  instead.

这里没有匹配到https://,  简单地将表达式改为 https*://[\w./]+,  不能解决问题,因为那会将类似httpsssssss:// 匹配认为是合法URL地址,显然不合需求!

解决方法是:https?://[\w./]+

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值