AJax技术

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

字号+ 作者:H5之家 来源:H5之家 2017-07-26 09:05 我要评论( )

正则表达式的高级技巧8个常用的概念,正则表达式高级技巧背后的关键概念.

网页制作Webjx文章简介:正则表达式高级技巧背后的关键概念.

5. 最小组团(Atomic Groups)

最小组团是无捕捉的特殊正则表达式分组。通常用来提高正则表达式的效能,也能用于消除特定匹配。一个最小组团可以用(?>pattern) 来定义,其中pattern是匹配式。

/(?>his|this)/

当正则引擎针对最小组团进行匹配时,它会跳过组团内标记的回溯位置。以单词“smashing”为例,当用上面的正则表达式匹配时,正则引擎会先尝试在“smashing”里寻找“his”。显然,找不到任何匹配。此时,最小组团就发挥作用了:正则引擎会放弃所有回溯位置。也就是说,它不会尝试再从“smashing”里查找“this”。为什么要这样设置?因为“his”都没有返回匹配结果,包含有“his”的“this”当然就更匹配不了了!
上面的例子并没有什么实用性,我们用/t?his?/ 也能达到效果。再看看下面的例子:

/\b(engineer|engrave|end)\b/

如果把“engineering”拿去匹配,正则引擎会先匹配到“engineer”,但接下来就遇到了字词边界,\b,所以匹配不成功。然后,正则引擎又会尝试在字串里寻找下一个匹配内容:engrave。匹配到eng的时候,后面的又对不上了,匹配失败。最后,尝试“end”,结果同样是失败。仔细观察,你会发现,一旦engineer匹配失败,并且都抵达了字词边界,“engrave”和“end”这两个词就已经不可能匹配成功了。这两个词都比engineer短小,正则引擎不应该再多做无谓的尝试。

/\b(?>engineer|engrave|end)\b/

上面的替代写法更能节省正则引擎的匹配时间,提高代码的工作效率。

 

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

相关文章
  • AJAX关键技术及其在软件开发中的应用

    AJAX关键技术及其在软件开发中的应用

    2017-02-13 08:00

  • Ajax中的关键技术

    Ajax中的关键技术

    2016-04-28 18:00

  • 关于20个Ajax关键问题的疑问及解答

    关于20个Ajax关键问题的疑问及解答

    2016-01-15 10:11

  • 从内存地址解析Java的static关键字的作用

    从内存地址解析Java的static关键字的作用

    2015-11-03 19:30

网友点评