正则表达式是一种描述字符串结构的语法规则,是一个特定的格式化模式,可以匹配、替换、截取匹配的字串。
grep:最初是ED编辑器中的一条命令,用来显示文件中特定的内容,后来成为一个独立的工具g1epa
egrep: grep虽然不断地更新升级,但仍然无法跟上技术的脚步.为此,贝尔实验室推出了egrep,意为“扩展的grep”,这大大增强了正则表达式的能力.
POSIX (Portable Operating System Interface of Vnix ):可移植操作系统接口.在grep发展的同时,其他一些开发人员也按照自己的喜好开发出了具有独特风格的版本。但问题也随之而来,有的程序支持某个元字符,而有的程序则不支持。因此就有了POSIX, POSIX是一系列标准,确保了操作系统之间的可移植性.但POSIX和SQL一样,没有成为最终的标准而只能作为一个参考。
Perl (Practical Extraction and Reporting Language):实际抽取与汇报语言.1987年,Larry Wall发布了Pert。在随后的7年时间里,Perl经历了从Perl I到现在的Perl5的发展,最终Perl成为了 POSIX之后的另一个标准。
PCRE: Perl的成功,让其他的开发人员在某种程度上要兼容Perl,包括。C++, Java. Python
等都有自己的正则表达式。1997年,Philip Hazel开发了PCRE库,这是兼容Per!正则表达式
的一套正则引擎,其他开发人员可以将PCRE整合到自己的语言中,为用户提供丰富的正则
功能。许多软件都使用PCRE, PHP正是其中之一。
6.2.1行定位符(^和$)
行定位符就是用来描述字串的边界。“^”表示行的开始;“$”表示行的结尾.如:
^tm
该表达式表示要匹配字串tm的开始位置是行头,如tin equal Tomorrow Moon就可以匹配,而Tomorrow
Moon equal tm则不匹配。但如果使用
tm$
则后者可以匹配而前者不能匹配.如果要匹配的字串可以出现在字符串的任意部分,那么可以直接
写成 tm
这样两个字符申就都可以匹配了。
6.2.2单词定界符(, B)
使用tm可以匹配在字符串中出现的任何位置。那么类似html, utmost中的tm也会被查找出来。但现在需要匹配的是单词
tm,而不是单词的一部分。这时可以使用单词分界符,表示要查找的字符串为一个完整的单词。
如: tm
还有一个大写的B,意思和相反。它匹配的字串不能是一个完整的单词,而是其他单词或字串的一部分。如: BtmB
6.2.3字符类([])
正则表达式是区分大小写的,如果要忽略大小写可使用方括号表达式“[]”。只要匹配的宇符出现在方括号内,即可表示匹配成功。但要注意:一个方括号只能匹配一个字符。
匹配不区分大小写的字母 : 如 :[Tt][Mm]