说起正则表达式,就不得不提到美国数学家Stephen Kleene,他当初开发这些“规则的式子”(由此得名)来作为描述他的“the algebra of regular sets”的符号。他的这些工作也就是早期一些查找算法的雏形,并且导致Unix平台上最早一些字处理工具的出现。所以,“*”有时也被称为“Kleene star”。(2)
那到底什么是正则表达式呢?
正则表达式的概念
正则表达式,Regular Expression(也称为“regex”或“regexp”),是一种用来描述文本模式的特殊语法。一个正则表达式由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符,如/、*、?等)组成。简单地说,一个正则表达式就是你需要匹配的字符串。例如,正则表达式“A*B”匹配字符串“ACCCB”但是不匹配“ACCCC”。
我们知道,正则表达式在许多其他语言中得到了广泛的应用,诸如Python、Perl、PHP、Javascript、Jscript等。然而在JDK1.4以前,如果Java程序员需要利用正则表达式,他就不得不求助于第三方的类库,如IBM的regex for Java和Jakarta-ORO等(3)。或者自己用Java中的String、StringTokenizer等类来实现相应的功能,可想而知,那是多么地令人沮丧的一件事情。