2012年/09月/03日
正则笔记
历史
正则表示式这一概念最早可以追溯到20世纪40年代的两个神经物理学家Warren McCulloch与Walter Pitts,他们将神经系统中的神经元描述成小而简单的自动控制元;
紧接着,在50年代,数学家1950年代,数学家Stephen Kleene利用称之为正则集合的数学符号来描述此模型,并且建议使用一个简单的概念来表示,
于是regular expressions就正式登上历史舞台了。
1968年,Ken Thompson发表了Regular Expression Search Algorithm, 紧接着
大神Thompson根据这个论文实现了Unix上编辑器ed的前身qed
1986年,POSIX(Portable Operating System Interface)标准
OSIX规范分为基本正则表达式BRE(Basic Regular Expressions)和扩展正则表达式
现在的编程语言中的正则表达式,大部分都属于PCRE这个分支, Perl兼容正则表达式,Perl Compatible Regular Expressions
数学定义
三种运算
并
串接
闭包
实例
组,引用
// Removes whitespace between a word character and . or ,
String pattern = "(\\w)(\\s+)([\\.,])";
System.out.println(EXAMPLE_TEST.replaceAll(pattern, "$1$3"));
// Extract the text between the two title elements
pattern = "(?i)(<title.*?>)(.+?)()";
String updated = EXAMPLE_TEST.replaceAll(pattern, "$2");
Java String
Pattern class
static Pattern compile(String regex)
Matcher matcher(CharSequence input)
static boolean matches(String regex, CharSequence input)
String[] split(CharSequence input)
String pattern()
Matcher class
boolean matches()
boolean find()
boolean find(int start)
String group()
int start()
int end()
int groupCount()