首页 > 代码库 > 正则表达式

正则表达式

 正则表达式是一个描述模式的字符串。正则表达式有三种用法:匹配;替换;把字符串拆分成小块字符组成的数组。

基础

/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  使表达式在第二次运行时,加快速度(在一个循环内时)

 

正则表达式