首页 > 代码库 > 正则表达式
正则表达式
正则表达式是一个描述模式的字符串。正则表达式有三种用法:匹配;替换;把字符串拆分成小块字符组成的数组。
基础
/cow/ 把要匹配的字符串写在/ /中
^ 表示必须匹配到字符串开头
$ 表示必须匹配到字符串结尾
. 可以匹配任意字符 除了\n
正则表达式对大小写敏感
字符类
[abcde] 通过[]来定义一个字符类
[^abcde] 在前面加^表示此集合的补集
[a-zA-Z] 用 - 来定义字符范围
选择性
/cat|dog/ 通过|来表示可选择的部分
重复序列(须写在字符后面)
? 0次或1次
* 0次或多次
+ 1次或多次
{n} n次
{n,m}最少n次,不超过m次
{n,} 最少n次
预定义的字符类
\s 空白
\S 非空白
\w 单词字符
\W 非单词字符
\d 数字
\D 非数字
锚:锚将匹配限制在字符串中的特定位置
^ 字符串开头
$ 字符串结束
\b 单词边界
\B 非单词边界
\A 字符串开始
\Z 字符串结尾,或者换行符\n之前
\z 字符串结尾
贪婪和量词
在默认情况下正则表达式会尽量多地匹配这个模式
在量词后面加?就可以转换为非贪婪模式 非贪婪模式会尽量少的匹配
逆向引用
通过()来表示子模式
再用\1来引用第一个子模式,以此类推
preg_match("/(hello)\w\1/","hello world hello",$m)
模式(把一个单字符放在正则表达式后面,从而改变表达式的解析、行为或者匹配方式)
i 匹配大小写
s 使句点匹配任意字符,包括\n
x 去掉空白和注释
m 使^能匹配\n之后的内容,$能匹配换行符\n之前的内容
e 如果替换字符串是PHP代码,则用eval()执行该代码,得到实际替换的字符串
U 颠倒子模式的贪婪性
u 把字符串当做UTF-8编码
X 如果反斜杠之后跟着一个没有意义的字符,则产生一个错误
A 把锚定位在字符串开始
D 让$字符只匹配一行的末尾
S 使表达式在第二次运行时,加快速度(在一个循环内时)
正则表达式