当前位置:  开发笔记 > 编程语言 > 正文

正则表达式不敏感性更慢吗?

如何解决《正则表达式不敏感性更慢吗?》经验,为你挑选了1个好方法。

资源

RegexOptions.IgnoreCase比我想象的要贵(例如,应该几乎不可测量)

假设这适用于PHP,Python,Perl,Ruby等以及C#(这是我假设Jeff正在使用的),它会减速多少,并且我会/[a-zA-z]/像我一样承受类似的惩罚/[a-z]/i



1> Jeff Atwood..:

是的,[A-Za-z]比设置更快RegexOptions.IgnoreCase,主要是因为Unicode字符串.但它也有更多限制 - [A-Za-z] 与重音国际字符匹配,它实际上是A-Za-z ASCII集,仅此而已.

我不知道你是否看到Tim Bray对我的信息的回答,但这是一个很好的答案:

国际化搜索中最棘手的问题之一是大写和小写.这种情况的概念仅限于用拉丁语,希腊语和西里尔字符集编写的语言.讲英语的人自然希望搜索不区分大小写,只因为他们是懒惰的:如果Nadia Jones想要在Google上看到自己,她可能只会输入nadia jones并期望系统能够处理它.

因此,搜索系统通过将单词全部转换为小写或大写来"标准化"单词,这对于索引和查询都是相当常见的.

问题在于案例之间的映射并不总是像英语一样简单.例如,德国小写字母"ß"在上层时变为"SS",而在土耳其语中下降的好旧资本"I"变成无点的"ı"(是的,他们有"我",其大写版本是"İ").我已经阅读(但未经过第一手验证),在法国和魁北克省,重新加上重音字符"é"的规则是不同的.所有这一切的结果之一是,像java.String.toLowerCase()这样的软件在尝试解决所有这些角落案例时往往运行得非常慢.

http://www.tbray.org/ongoing/When/200x/2003/10/11/SearchI18n

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有