正则表达式,又称规则表达式.Regular Expression,在代码中常简写为regex,regexp或者RE,计算机科学的一个概念.正则表达式通常被用来检索,替换那些符合某个模式(规则)的文本.1956<神经网事件的表示法>,1971年正则表达式被引用到Unix系统1984年office系列软件开始使用正则.C语言1971年诞生,C语言中没有正则,C语言要调用一个regcomp的一个库才能使用正则,库文件是调用系统的正则.
正则表达式分为:
DFA:MySQL
NFA:Java ,PHP, Python .NET
DosixNFA:可移植性的操作系统,一般服务器使用的引擎
正则表达式: 由定界符,原子,元字符,模式修正符号组成.
定界符:常用 / / 双反斜杠,其他符合也可以:( ) { }都可以
原子:最少的一个匹配单位(放在定界符中),在一个正则中,至少要有一个原子.
元字符:元字符不能当独使用的,用来修饰原子,是用来扩展功能和限定功能.写在定界符内
模式修正符号:修正,对模式(正则)修正,(写在定界符外面,右边)
注: 在程序语言中,使用与perl兼容的正则表达式,通常都需要将模式表达式放入定界符之间
除了字母,数字和斜线”\”以外的如何字符都可以做为定界符,但是必须成对出现
原子:1打印字符(a-z)(A-Z)(0-9)能打印的字符都能做为原子
2非打印字符:在使用非打印字符做为原子是最好在前面加”\”反斜杠
\转译字符:1.可以将有意义的字符转成没有意义的原子符
2.可以将没有意义的字符转成有的原子
3.所有没有意义的字符,加上转译也没有意义的,可加可不加
非打印字符: \f 换页符 \n行行符 \r回车符 \t制表符 \v垂直制表符
原子: \d代表任意数字
\D代表任意非数字
\w代任意一个字(电脑内输出的字范围:a-z,A-Z,0-9,_)
\W代表任意非字
\s代表空白
\S代表任意非空白
自定义原子表:
[a-z,A-Z]从哪个区间范围
[^a-z,A-Z]除了列表中的元素,也就是列表以外的.
点能代表所有的原子.
元字符:不能再正则中单独使用,用来修饰原子的
*用来修饰前面的原子可以出现0个或者一个或者多个(任意次)
Str=”+/google/+”;
Reg=”/go*gle/”;
结果:google
+号用来修饰其前面的原子可以出现1个或多个,最少一次
? 号用来修饰其前面的原子可以出现1个或多个,最少一次
{m} m=3用来修饰其前面的原子可以出现m个,不可多也不可少
{n,m} n=2,m=5用来修饰其前面的原子可以出现m到n之间,包括n和m次
{2,}用来修饰其前面的原子可以出现最少2次
注: |是或的关系,表示它两边的原子,主要有一个出现就可以,但是|的优先级最低
^和\A表示必须以什么开始,这个必须写在正则表达式最前面;
$ 和\Z表示必须以什么结束,这个必须写在正则表达式最后面.
例子:
‘/^abd.*abc$/’ 表示的意思是:必须以abc开始和abc结束中间可以出现任意字符任意次.的字符串
\b单词边界(空白的意思)
\B不是单词边界(非空白的)
Str=” this is island”
Reg=”/\bis\b/” 获取的是中间的is
Reg=”/\bis\B/” 获取的是land前面的is
Reg=”/\Bis\b/” 获取的是this的那个is
( )的作用:
1. 改变优先级
2. 将小原子变成大原子
3. 子模式整个表达是一个大的模式,小括号中是每个独立的子模式:比如获取网址;分主机名,域名,顶级域名
4. 反向引用
?:取消子模式作用
“/\d(4)(-1/)\d(2)(-1/)\d(2)/”