1.什么是正则表达式?
正则表达式(Regular Expression)是一种匹配文本中的字符序列的字符模式。
2.正则表达式用在哪些地方?
2.1查找重复的单词 \<([A-Za-z]) +\1\>
Paris in the the spring.
The theoretical viewpoint is of little value here.
I view the theoretical viewpoint as being of little value here.
I think that that is often overdone.
This sentence contains contains a doubled word or two two.
Fear fear is a fearful thing.
Writing successful programs requires that the the programmer fully understands the problem to be solved.
2.2表单验证
e.g. 电子邮件地址 ^\w*(?<=w)\.?\w+@(?=[\w\.]+\w)\w+\.\w{3,4]$
@Home
@ttitude
John@somewhere.invalid
Peter@example.org
Peter@example.info
John@Smith@example.com
20 @ $10 each
@@@ This is a comment @@@
Jane@example.net
Peter.Smith@example.net2.3转换日期格式
2.4拼写检查
e.g. 检查Training前面的单词: \b\w+\s+Training
筛选出可能拼错的Training: star\s+T\w+g
2.5为URL添加链接
3. 为什么正则表达式看起来令人生畏?
3.1简介而神秘的语法
含有^ *\ ( [ {等,看起来像是乱码
3.2空格会导致含义改变
^S.*与^ S.* ^(C|D|R|S).* 与 ^(C|D |R|S).*
3.3没有统一的语法标准
3.4各种实现之间有差别
Microsoft Word,OpenOffice.ogr,findstr,PowerGPER,Microsoft Excel通配符,MySQL,Access,JScript和JavaScript,VBScript,C#,PHP,W3C XML Schema,java,Perl
3.5不同环境下的字符含义不同
^在字符类的外部表示一行的开始位置^and匹配字符序列and位于一行开头,在字符类内部则表示取反
.[^and].*匹配一个字符后不跟a、n、d字符,并且后可跟零个或多个任意字符
3.6正则表达式可以区分大小写
区分大小写两层意思:一方面指按照是否区分大小写的原则进行匹配;另一方面指元字符区分大小写\d与\D。
3.7同一编辑器或语言的不同版本也会提供不同的正则表达式功能,支持性技术不断发展
3.8一个问题对应多个正则表达式解决方案
3.9不同的数据源,即使用环境不同,正则表达式达到的效果不同