2009-02-05

chrome将使用一个全新的正则表达式引擎:Irregexp

Google Chrome最近发布了一个开发版本,这个版本的V8引擎(一个Javascript实现),使用了一个名为Irregexp的正则表达式引擎。在之前所有的版本里,Chrome使用的是JSCRE这个也被webkit项目使用的正则引擎。JSCRE这个引擎,是基于一个被广泛使用的PCRE实现的。从JSCRE这个名字,就知道它是专为Javascript引擎而诞生的了。

Chrome之所以舍弃JSCRE,而使用Irregexp。是因为Chrome或者准确地说V8的开发者们认为,基于Chrome的架构实现一套正则引擎,可以结合整个架构做更多的优化。使用一个外部的库,使得某些优化变得不可能,而且在接口间传递数据,也是一个消耗。(插一句,mysqlnd的实现,也就是基于这种理念的)。

Irregexp采用了一个叫Automata理论来编译正则表达式。Automata,我大致看了一下wikipedia的资料,它的结构大概有五个部分:状态,符号变量,转换函数(也就是根据状态和符号变量来做运算的函数),初始状态(属于状态的一种),接受状态。好吧,我在这里打住,我并不是很熟悉这个算法,也是第一次听说。再说下去就会错得越来越多了,需要了解的朋友可以从wikipedia的条目(http://en.wikipedia.org/wiki/Automata_theory)看起。

Chrome的开发人员举了个例子来说明Automata的优点。假设要编译/Sun|Mon/,传统的编译算法,是存储Sun和Mon两个毫不相关的串。而Automata的算法,可以使得程序知道他们有一个共同点,就是在这组正则里,第三个字节是n。这样使得在搜索串的时候,可以先往前N位寻找到n,然后再往后匹配。

举例归举例,要了解到它的整体和具体实现,还是得去看它的代码。有兴趣的同学们去Chrome(实际这样的说法不准确,将就了)的开发主页上看看吧:http://code.google.com/chromium/

2008-09-03

gfans.org的feed地址更换

Google Chrome支持bzip2压缩

2008-09-02

Google Chrome - 跨平台开源的Web浏览器

2008-07-27

Google 搜索新增快捷键

2008-06-12

Google Developer Day 2008,你吃饱了吗?

2007-12-09

Google Video China的介绍

2007-10-07

Google Book Search新增Add to my library

2007-10-06

Google Desktop 5.5 Beta

2007-08-16

谷歌拼音升级至1.0.21.0

这里

  这里没有 PageRank,没有 HillTop,没有 SEO。如果 Google 是龙井,我希望这里便是虎跑,去化开那馥郁如兰之香。观于沧海者难为水,搜于 Google 者难为言,Google 已不只是文化,他是我的信仰。

本站文章约法三章:

  • 不讨论 SEO 及相关;
  • 不得无聊转载;
  • 严禁侮辱百度。
  如果您认为有言论不合以上规则,请联系我们

贡献

最新评论

最新讨论

Loading......