AJax技术

正则表达式教程之重复匹配详解(2)

字号+ 作者:H5之家 来源:H5之家 2018-06-14 14:15 我要评论( )

分析:[Bb]匹配b标签(不区分大小写),/[Bb]匹配/b标签(不区分大小写)。但结果却不是预期的那样有三个,第一个/b标签之后,一直到最后一个/b之间的东西全部匹配出来了。 为什么会这样呢?因为*和+都是贪婪型的元

分析:<[Bb]>匹配<b>标签(不区分大小写),</[Bb]>匹配</b>标签(不区分大小写)。但结果却不是预期的那样有三个,第一个</b>标签之后,一直到最后一个</b>之间的东西全部匹配出来了。

为什么会这样呢?因为*和+都是贪婪型的元字符,它们在匹配时的行为模式是多多益善,它们会尽可能从一段文本的开头一直匹配到这段文本的末尾,而不是从这段文本的开头匹配到碰到第一个匹配时为止。

当不需要这种贪婪行为时,可以使用这些元字符的懒惰型版本。懒惰意思是匹配尽可能少的字符,与贪婪型相反。懒惰型元字符只需要给贪婪型元字符加上一个?后缀即可。下面是贪婪型元字符的对应懒惰型版本:

*       *?

+       +?

{n,}   {n,}?

所以上面的例子中,正则表达式只需要改成<[Bb]>.*?</[Bb]>即可,结果如下:

<b>history</b>

<B>mystery</B>

<b>gift</b>

四、总结

正则表达式的真下威力体现在重复次数匹配方面。这里介绍了+、*、?几种元字符的用法,如果要精确的确定匹配次数,使用{}。元字符分贪婪型和懒惰型两种,在需要防止过度匹配的场合下,请使用懒惰型元字符来构造正则表达式。在下一篇中将会介绍位置匹配。

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:

正则表达式在线生成工具:

希望本文所述对大家正则表达式学习有所帮助。

您可能感兴趣的文章:

  • 正则表达式
  • 重复匹配
  • 相关文章

    最新评论

    大家感兴趣的内容

    最近更新的内容

    常用在线小工具

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 正则表达式的高级技巧8个常用的概念

      正则表达式的高级技巧8个常用的概念

      2017-07-26 09:05

    • ajax入门简明教程---正则表达式验证

      ajax入门简明教程---正则表达式验证

      2017-04-24 14:01

    • Python正则表达式实现截取成对括号的方法

      Python正则表达式实现截取成对括号的方法

      2017-01-19 18:04

    • 学习JavaScript正则表达式

      学习JavaScript正则表达式

      2015-11-19 09:08

    网友点评