简介
正则表达式(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)
http://www.wangmingchang.com/2244.html
正则表达式常用规则整理(2)
http://www.wangmingchang.com/2245.html
在线测试工具
参考文献
菜鸟教程:http://www.runoob.com
脚本之家:http://www.jb51.net
更新记录
2017-11-4 第一版 正则表达式的一些简单应用
版权
本在线手册由王明昌博客编写,转发请保留原地址:http://www.wangmingchang.com/