正则表达式的“鼻祖”或许可一直追溯到科学家对人类神经系统工作原理的早期研究。美国新泽西州的Warren McCulloch和出生在美国底特律的Walter Pitts这两位神经生理方面的科学家,研究出了一种用数学方式来描述神经网络的新方法,他们创新地将神经系统中的神经元描述成了小而简单的自动控制元,从而作出了一项伟大的工作革新。 在1956 年,出生在被马克·吐温(Mark Twain)称为“美国最美丽的城市之一的”哈特福德市的一位名叫Stephen Kleene的数学科学家,他在Warren McCulloch和Walter Pitts早期工作的基础之上,发表了一篇题目是《神经网事件的表示法》的论文,利用称之为正则集合的数学符号来描述此模型,引入了正则表达式的概念。正则表达式被作为用来描述其称之为“正则集的代数”的一种表达式,因而采用了“正则表达式”这个术语。
之后一段时间,人们发现可以将这一工作成果应用于其他方面。Ken Thompson就把这一成果应用于计算搜索算法的一些早期研究,Ken Thompson是 Unix的主要发明人,也就是大名鼎鼎的Unix之父。Unix之父将此符号系统引入编辑器QED,然后是Unix上的编辑器ed,并最终引入grep。 在linux下支持正则表达式的工具很多,如:grep vim sed awk more less page 等。
正则表达式有标准的POSIX标准(BRE),还有一些扩展标准,grep支持的ERE,perl 支持的PERL
标志的BRE标准:
1.常用的元字符
代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
[abcd] 匹配adcd其中的一个
{n\} 重复n次
{n,\} 重复n次或更多次
{n,m\} 重复n到m次
\(\) 模式存储
ERE:
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
grep历史有三个版本:Grep Egrep Fgrep。在92版本的POSIX标准中,三个版本合而为一。可以通过不同的参数支持多个正则表达式标准。
root@wang:/work/hryl_webkit# cat /etc/passwd | grep -E "1{2}"
couchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash
pulse:x:109:114:PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:110:117:RealtimeKit,,,:/proc:/bin/false
saned:x:111:118::/home/saned:/bin/false
hplip:x:112:7:HPLIP system user,,,:/var/run/hplip:/bin/false
gdm:x:113:120:Gnome Display Manager:/var/lib/gdm:/bin/false
statd:x:114:65534::/var/lib/nfs:/bin/false
sshd:x:115:65534::/var/run/sshd:/usr/sbin/nologin
root@wang:/work/hryl_webkit# cat /etc/passwd | grep -E "bash$"
root:x:0:0:root:/root:/bin/bash
couchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash
wanghuan:x:1000:1000:wanghuan,,,:/home/wanghuan:/bin/bash
root@wang:/work/hryl_webkit# cat /etc/passwd | grep -E "^root"
root:x:0:0:root:/root:/bin/bash
root@wang:/work/hryl_webkit# cat /etc/passwd | grep -E "1{2,3}"
couchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash
pulse:x:109:114:PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:110:117:RealtimeKit,,,:/proc:/bin/false
saned:x:111:118::/home/saned:/bin/false
hplip:x:112:7:HPLIP system user,,,:/var/run/hplip:/bin/false
gdm:x:113:120:Gnome Display Manager:/var/lib/gdm:/bin/false
statd:x:114:65534::/var/lib/nfs:/bin/false
sshd:x:115:65534::/var/run/sshd:/usr/sbin/nologin
阅读(1108) | 评论(0) | 转发(0) |