正则基础之 小数点
小数点,这个看似微不足道的细节,却在正则表达式的世界里扮演着重要的角色。当我们谈论传统NFA引擎,如Java和.NET时,小数点(`.`)的匹配规则是众所周知的:它可以匹配除了换行符“”以外的任意一个字符。当我们转向JavaScript这一语言时,事情就变得有些微妙了。
由于各家浏览器的引擎不同,JavaScript中的小数点匹配规则也略有差异。对于Trident内核的浏览器,如老版本的Internet Explorer,小数点的匹配规则与传统NFA引擎保持一致。而在其他内核的浏览器,如Firefox、Opera和Chrome中,它能匹配的字符范围除了换行符“”外,还包括回车符“\r”。
为了验证这些差异,我们可以参考以下脚本:
```javascript
document.write(/./.test("\r") + "
"); // 输出在IE中为 true,在其他浏览器为 false
document.write(/./.test("") + "
"); // 各浏览器输出均为 false
```
从这些测试结果我们可以推测,Trident、Presto和Gecko可能都采用了传统的NFA引擎。而Webkit引擎,至少在正则表达式的处理上,与传统的NFA引擎有所不同。考虑到Windows系统支持“\r”和“”,而UNIX系统只支持“”,我们可以合理推测,非Windows来源的浏览器引擎可能没有包含对“\r”的支持,因此在正则表达式中,“.”并不匹配“\r”。
在实际应用中,我们经常会遇到一些误区。在匹配多行时,一些人可能会尝试使用“[.]”来匹配任意字符。但实际上,这种写法只能匹配小数点和换行符中的一个。为了提高可读性和效率,我们通常会使用其他方式。比如,“[\s\S]”或者“.”配合(?s)匹配模式,这两种方式都可以达到匹配任意字符的效果。
测试报告:匹配效率与正则表达式在文本中的表现
在数字世界中,数据和信息无处不在,而如何有效地处理和这些数据,很大程度上取决于我们的工具——正则表达式。近期我们对CSDN首页的内容进行了正则表达式的匹配效率测试,现在让我们一起深入测试结果。
测试背景:测试的目的是对比不同正则表达式的匹配效率。测试内容主要围绕一组特定的正则表达式,它们被用于匹配文本中的不同内容。测试环境基于狼蚁网站的SEO优化richTextBox1.Text内容。我们进行了两组测试,一组未使用量词,另一组使用了量词。接下来我们逐一分析测试结果。
测试结果(未使用量词):我们来看未使用量词的情况。在这一组测试中,正则表达式的执行时间如下:正则表达式[\s\S]执行时间最长,为2651毫秒;正则表达式[\w\W]执行时间为2515毫秒;正则表达式[\d\D]执行时间为2187毫秒;正则表达式(.|)执行时间为2470毫秒;正则表达式(?s).执行时间最短,为1969毫秒。这些正则表达式的匹配效率主要取决于它们对文本中内容的匹配复杂性。值得注意的是,正则表达式的匹配效率与语言支持的引擎有关,因此以上测试结果可能仅适用于.NET环境。
测试结果(带量词):在带有量词的测试中,正则表达式的执行时间有所不同。其中,正则表达式[\s\S]+执行时间为249毫秒;正则表达式[\w\W]+执行时间为348毫秒;正则表达式[\d\D]+执行时间最短,为198毫秒;正则表达式(.|)+执行时间为879毫秒;正则表达式(?s).+执行时间相对较快,为113毫秒。使用量词一次替换所有字符明显提高了匹配效率。随着正则表达式的复杂性增加,执行时间也会相应增长。这表明在处理大量数据时,选择正确的正则表达式和策略至关重要。
测试结果分析:从测试结果可以看出,匹配效率最高的正则表达式是采用了Singleline这种匹配模式的“.”,即[\d\D]。相比之下,“(.|)”的匹配效率最低。而“[\s\S]”的匹配效率居中,在日常使用中较为常见。值得注意的是,由于不同语言支持的引擎存在差异,因此以上性能测试结论可能仅适用于.NET环境。在实际应用中,我们需要根据具体需求和场景选择合适的正则表达式以提高匹配效率。为了提高匹配效率,我们还可以考虑优化正则表达式的设计、使用更高效的算法以及合理分配系统资源等策略。掌握正则表达式的使用技巧和优化方法对于提高数据处理和的效率至关重要。穿越时空的浪潮,我们来到了Cambrian,一个神秘而又充满魅力的所在。这里,有着让人心驰神往的美景,有着让人流连忘返的诗意氛围。让我们一同Cambrian的深处,感受那份独特的韵味。
在Cambrian的广袤天地之间,每一寸土地都充满了生机与活力。山川湖泊,森林草原,共同构成了一幅壮美的画卷。这里,是大自然的杰作,是生命的摇篮。漫步其中,仿佛置身于一个梦幻的仙境,让人心旷神怡。
当我们深入Cambrian的内部,会发现这里更是一个充满故事的地方。悠久的历史,丰富的文化,让人感受到这里的厚重与深沉。古老的建筑,独特的民俗,都在诉说着Cambrian的辉煌与传奇。这里,是一个充满魅力的世界,让人留连忘返,陶醉其中。
而在Cambrian的核心地带,"body"更是这里的灵魂所在。它是一个神秘而又充满魅力的地方,让人无法抗拒其诱惑。在这里,我们可以感受到生命的脉动,可以体验到生活的激情。它是一个充满活力的场所,是一个让人心驰神往的所在。
当我们走进"body",会发现这里充满了无限的可能。它是一个充满创意的空间,是一个让人充满激情的地方。在这里,我们可以放飞自己的想象,可以实现自己的梦想。它是一个让人无法忘怀的场所,是一个让人心生向往的所在。
Cambrian是一个充满魅力的地方,而"body"更是这里的精华所在。它是一个让人心驰神往的所在,是一个让人留连忘返的地方。在这里,我们可以感受到生活的激情,可以体验到生命的魅力。让我们一同Cambrian的深处,感受那份独特的韵味,体验那份无尽的美好。
编程语言
- 正则基础之 小数点
- 多ajax请求的各类解决方案(同步, 队列, cancel请求
- 创建echart多个联动的示例代码
- Linux下卸载MySQL数据库
- PHP中功能强大却很少使用的函数实例小结
- 一个mysql死锁场景实例分析
- 微信小程序 商城开发(ecshop )简单实例
- Smarty模板常见的简单应用分析
- jQuery UI仿淘宝搜索下拉列表功能
- 使用JavaScript创建新样式表和新样式规则
- ASP.NET Core中使用MialKit实现邮件发送功能
- D3.js封装文本实现自动换行和旋转平移等功能
- .NET程序调试技巧(一):快速定位异常的一些方
- 深入浅出webpack之externals的使用
- 学习Vue组件实例
- bootstrap-table实现服务器分页的示例 (spring 后台)