特殊标识的原子
原子 | 说明 |
---|---|
\d | 匹配一个0-9 |
\D | 除了0-9以外的所有字符 |
\w | a-zA-Z0-9_ |
\W | 除了0-9A-Za-z_以外的所有字符 |
\s | 匹配所有空白字符\n \t \r 空格 |
\S | 匹配所有非空白字符 |
[ ] | 指定范围的原子 |
原子 | 等价式 |
---|---|
\w | [a-zA-Z0-9_] |
\W | [^a-zA-Z0-9_] |
\d | [0-9] |
\D | [^0-9] |
\s | [ \t\n\f\r] |
\S | [^ \t\n\f\r] |
以上是匹配一个的情况下用的,如果想匹配多个字符的时候就要用到元字符
元字符功能说明
* 是代表匹配前面的一个原子,匹配0次或者任意多次前面的字符。
+ 匹配一次或多前前面的一个字符
? 前面的字符可有可无【可选】 有或没有
. 更标准一些应该把点算作原子。匹配除了\n以外的所有字符
或者。注:它的优先级最低了。
^ 必须要以抑扬符之后的字符串开始
$ 必须要以$之前的字符结尾
\b词边界 就是指必须要在最前或者最后。
\B非边界 就是不能在一个正则表达示的最前或者最后。
{m}有且只能出现m次
{n,m}可以出现n到m次
{m,}至少m次,最大次数不限制
()改变优先级或者将某个字符串视为一个整体,匹配到的数据取出来也可以使用它
php 正则达达示中的模式修正符
我们通过元字符和原子完成了正则表达示的入门。有一些特殊情况我们依然需要来处理。
如果abc在第二行的开始处如何匹配?
我不希望正则表达示特别贪婪的匹配全部,只匹配一部份怎么办?
这个时候,我们就需要用到下面的这些模式匹配来增强正则的功能。
常用的模式匹配符有:
模式匹配符 | 功能 |
---|---|
i | 模式中的字符将同时匹配大小写字母. |
m | 字符串视为多行 |
s | 将字符串视为单行,换行符作为普通字符. |
x | 将模式中的空白忽略. |
A | 强制仅从目标字符串的开头开始匹配. |
D | 模式中的美元元字符仅匹配目标字符串的结尾. |
U | 匹配最近的字符串. |