正则表达式

简介


正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”)。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。(简介摘抄自菜鸟教程,我也没听懂什么意思,反正就是为了提高效率,往往需要100行代码的,用正则只需要一行就能解决。^_^)

语法


正则表达式由定界符、原子、元字符、模式修正法组成。

定界符:常用// 也可以用{} ||  !! ## 等,成对出现, 可省略

原子:最小的一个匹配单位,放在定界符中。/原子/

原子表:[122w2d]    [a-zA-Z0-9]  [^1-9]非1-9 (原子表中 -表示多少到多少 ;   ^表示非)

元字符:不能单独使用,用来扩展原子功能,修饰原子,对某个原子进行修正

模式修正符:修正,对整个正则进行修正,写在定界符后面。

 

元字符


普通元字符

常用的元字符
代码 说明
  . 匹配除换行符以外的任意字符
 | 匹配多者之间的或(优先级最低)
^ 或\A 匹配字符串的开始
$ 或\Z 匹配字符串的结束

 

重复元字符

代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次,至少一次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

例:go*gle匹配goooooogle、ggle

解析:*前面的o可以重复零次或多次

小括号(重要)

作用:

1改变优先级

2将小原子变为大原子   /(hjbkj)*hiu/

3子模式,整体是一个大模式,小括号中的是独立的子模式

4反向引用(-|/)

(?:\d{66})   ?: 取消子模式,变为独立模式

字符转义


本身用法

查找.可以使用\   组成    .

查找*可以使用\   组成   *

例如:wangmingchang.com匹配wangmingchang.com

匹配用法

常用的反义
代码 说明
 \d 匹配数字[0-9]
\D 匹配非数字[^0-9]
\w 匹配字母、数字、下划线、汉字
\W 匹配非字母、数字、下划线、汉字
\s 匹配空白
\S 匹配非空白
  . 匹配任意原子(.比较贪婪,后面介绍)

\b  匹配单词边界(空格?)   用法: \bgood\b  解析:匹配good左右两边都有边界

\B 匹配单词非边界部分

技巧    .* 任意原子出现任意次

优先级


|  优先级最低。 用()改变优先级。

 

模式修正符


写在定界符外面

/\d{6}/i     i即是一个模式修正符(i 不区分大小写)

一个符号一个功能,可组合使用

 

模式修正符 说明
i 表示在和模式进行匹配进不区分大小写(默认区分大小写)
m 将模式视为多行,使用^和$表示任何一行都可以以正则表达式开始或结束(默认视为一行)
s 如果没有使用这个模式修正符号,元字符中的”.”默认不能表示换行符号,将字符串视为单行
x 表示模式中的空白忽略不计
e 正则表达式必须使用在preg_replace替换字符串的函数中时才可以使用(讲这个函数时再说)
A 以模式字符串开头,相当于元字符^
Z 以模式字符串结尾,相当于元字符$
U 正则表达式的特点:就是比较“贪婪”,使用该模式修正符可以取消贪婪模式(不建议使用)

.*?      ?防止贪婪

经典事例


正则表达式常用规则整理(1)

https://www.wangmingchang.com/2244.html

正则表达式常用规则整理(2)

https://www.wangmingchang.com/2245.html

 

在线测试工具


http://rubular.com/

 

参考文献


菜鸟教程:http://www.runoob.com

脚本之家:http://www.jb51.net

更新记录


2017-11-4  第一版 正则表达式的一些简单应用

版权


本在线手册由王明昌博客编写,转发请保留原地址:https://www.wangmingchang.com/