正则表达式基础规则

2017-03-13  本文已影响8人  Tangbh

元字符

说明

.

匹配除换行符意外的任意字符

\w

匹配字母或数字或下划线

\s

匹配任意的空白符

\d

匹配数字

\b

匹配单词的开始或结束

^

匹配字符串的开始

$

匹配字符串的结束

[x]

匹配x字符,如匹配字符串中的 a、b 和 c 字符

\W

\w的反义,即匹配任意非字母,数字,下划线和汉字的字符

\S

\s的反义,即匹配任意非空白符的字符

\D

\d的反义,即匹配任意非数字的字符

\B

\b的反义,即不是单词开头或结束的位置

[^x]

匹配除了 x 意外的任意字符,如 [^abc] 匹配除了 abc 这几个字母之外的任意字符

重复

说明

*

重复零次或更多次

+

重复 1 次或更多次

?

重复零次或 1 次

{n}

重复 n 次

{n,}

重复 n 次或更多次

{n,m}

重复 n 到 m 次

贪婪与懒惰

正则表达式默认的情况下,会在满足匹配条件下尽可能的匹配更多内容。如a.*b,用他来匹配 aabab ,它会匹配整个 aabab ,而不会只匹配到 aab 为止,这就是贪婪匹配。

与贪婪匹配对应的是,在满足匹配条件的情况下尽可能的匹配更少的内容,这就是懒惰匹配。

上述例子对应的懒惰匹配规则为:

a.*?b

如果用该表达式去匹配aabab ,那么就会得到 aab 和 ab 这样两个匹配结果。

常用的懒惰限定符如下:

懒惰限定符

说明

*?

重复任意次,但尽可能少重复

+?

重复 1 次或更多次,但尽可能少重复

??

重复 0 次或 1 次,但尽可能少重复

{n,}

重复 n 次以上,但尽可能少重复

{n,m}

重复 n 到 m 次,但尽可能少重复

模式修正符

模式修正符是标记在整个正则表达式之外的,可以看着是对正则表达式的一些补充说明。

常用的模式修正符如下:

模式修正符

说明

i

模式中的字符将同时匹配大小写字母

m

字符串视为多行

s

将字符串视为单行,换行符作为普通字符

x

将模式中的空白忽略

e

preg_replace() 函数在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。

A

强制仅从目标字符串的开头开始匹配

D

模式中的 $ 元字符仅匹配目标字符串的结尾

U

匹配最近的字符串

u

模式字符串被当成 UTF-8

1

上一篇 下一篇

猜你喜欢

热点阅读