Skip to content

正则表达式的历史

04月 8, 2009

只能大概的把书上内容列一下了。
最初可以追溯到20世纪40年代,有两个神经生理学家建立了一个神经系统的模型。到了多年以后,数学家Stephen Kleene 用代数方法描述了这个模型,并称之为regular sets。并且他设计了一种简单的记号方法来表达regular sets,叫他们为regular expressions
之后正则表达式被广泛的研究应用。例如Ken Thompsonqed

Grep

  • 支持*,但是不支持+和?。
  • capturing metacharacters是\(⋯\)
  • 不支持alternation。
  • 括号只能用来capturing匹配的文本。

EGrep

  • 不仅支持+和?,还可以应用到被括号围着的表达式。

POSIX

把各种不同的正则表达式flavor归结为两种,Basic Regular Expressions (BREs), and Extended Regular Expressions (EREs)。

Regex feature BREs EREs
dot, ^, $, [⋯], [^⋯]
“any number” quantifier * *
+ and ? quantifiers + ?
range quantifier \{min,max\} {min,max}
grouping \(⋯\) (⋯)
can apply quantifiers to parentheses
backreferences \1 through \9
alternation

1986年,Henry Spencer 用C写了正则表达式库。接着Larry Wall发明了Perl,一版又一版的改进了正则表达式,加了一坨特性。

还要注意,每种语言提供的正则表达式有不同的flavor。
每种不同语言有不同的方式来实现正则表达式:集成的(integrated)、过程式的(procedural)和面向对象式的(object-oriented)。
集成的代表是Perl。
优点是简化了程序员的工作,因为它隐藏了一些机制,例如准备正则表达式,建立匹配,应用正则表达式,然后得到结果。
隐藏这些细节也有不利之处,在一些情况下,导致效率低下,处理不灵活。

No comments yet

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Connecting to %s

加关注

Get every new post delivered to your Inbox.