正则表达式

正则表达式的构成

/原子 元字符/模式修正符

1.定界符 //
2.原子
打印字符非打印字符(\r \f)

3.元字符
用来修饰原子

4.模式修正符
放在定界符外边的字符,一个字符就是一个功能,可以组合使用

1.原子

1.打印字符 键盘上的字符都是打印字符
2.非打印字符

原子字符含义描述
\cx匹配由x指明的控制字符。如\cM匹配一个Control-M或回车符.x的值必须为A~Z或a~z
\f匹配一个换页符 等价于 \x0c或\cL
\n匹配一个换行符 等价于 \x0a或\cJ
\r匹配一个回车符 等价于 \x0d或\cM
\t匹配一个制表符 等价于 \x09或\cI
\v匹配一个垂直制表符 等价于 \x0b或\cK

3.通匹配符

字符含义
\d代表任意一个数字[0-9]
\D代表任意一个非数字[^0-9]
\w代表任意一个字[0-9a-zA-Z]
\W代表任意一个非数字[^0-9a-zA-Z]
\s代表空白[\t\n\f\v]
\S代表非空白[^\t\n\f\v]
.任意原子

4.自定义原子表
[13579] 这个范围内的
[^13579a-z] 除了这个范围内的

2.元字符

字符含义
*匹配其前原子0次或多次
+匹配至少原子1次或多次
?匹配原子0或1次
|它两边的原子只要出现一个就可以 但优先级是最低的
{n}匹配n次
{n,}匹配至少n次
{n,m}匹配至少n次至多m次
^或\A匹配输入字符的开始位置 多行模式下行的开头,即紧随一个换行符之后 必须写正则最前面
$或\Z匹配输入字符的开始位置 多行模式下行的结尾,即紧随一个换行符之前 必须写正则最后面
\b代表单词边界
\B不是单词边界
()匹配其整体为一个原子,即模式单元,可以理解为大原子
$str = "abcfdsafdsafdsaabc";
//正则表达式
$reg = "/^abc.*abc$/";

$str = "this is island";
//正则匹配this 里的is
$reg = "/\Bis\b/";

()的作用

1.优先级改变

$str = "this oracmysql is island";
//正则匹配
$reg = "/orac(le|my)sql/";

2.小原子变大原子

$reg = "/(mysql)*/";

3子模式
整个表达式是个大模式,小括号是每个独立的子模式

$str = "this http://www.ngyhd.com oraclemysqlmysqlmysql";
//正则匹配网址
$reg = "/(http|ftp|https|telnet)\:\/\/(www|mail|ftp)\.(.*)?\.(net|com|org)/";

4.反向引用

$str = "this http://www.ngyhd.com 2014-01/24 oraclemysqlmysqlmysql";
//正则匹配日期
$reg = "//(?:\d{4})(-|\/)\d{2}\1\d{2}//"
?:不作为子模式
\1为第一个子模式

模式修正符

字符含义
i修正不区分大小写(默认区分大小写)
m修政府修正正则表达式可以视为多行,在使用^或$两个元字符时,每一行满足都可以
s.可以匹配换行符(默认.不能匹配回车符号)
x可以省略空白
U取消贪婪模式 相当于(.*?) 比如说要从字符串中 <td>面包</td><td>面包</td>,本来你只可以匹配面包一,可是你贪心,于是就把第一个<到最后一个<td>里面的两个面包取出来了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值