PHP正则表达式
正则表达式不过是字符本身的序列或模式。 它们为模式匹配功能提供了基础。
使用正则表达式可以搜索另一个字符串中的特定字符串,可以用另一个字符串替换一个字符串,并且可以将字符串拆分成许多块。
PHP提供了特定于两套正则表达式函数的函数,每种函数对应于一定类型的正则表达式。 您可以根据习惯使用它们中的任何一个。
- POSIX正则表达式
- PERL样式正则表达式
POSIX正则表达式
POSIX正则表达式的结构与典型的算术表达式的结构并不相似:各种元素(操作符)组合起来形成更复杂的表达式。
最简单的正则表达式是匹配字符:g,而haggle或bag等字符串中的单个字符g。
下面来解释在POSIX正则表达式中使用的几个概念。 之后将介绍正则表达式相关的功能。
括号
括号([])在正则表达式的上下文中使用时有特殊含义。它们用于查到一系列的字符。
| 编号 | 表达式 | 描述 |
|---|---|---|
| 1 | [0-9] |
它匹配从0到9的任何十进制数。 |
| 2 | [a-z] |
它匹配小写字母从a到z的任何字符。 |
| 3 | [A-Z] |
它匹配大写字母从A到Z的任何字符。 |
| 4 | [a-Z] |
它匹配从小写字母a到大写字母Z的任何字符。 |
上面显示的范围是一般的; 可以使用范围[0-3]来匹配0到3之间的任何数字值,或者范围[b-v]来匹配从b到v的任何小写字符。
限定符
括号内字符序列和单个字符的频率或位置可以用特殊字符表示。每个特殊字符都有一个特定的内涵。 如:+,*,?,{int. range}和$标志都遵循字符序列。
| 编号 | 表达式 | 描述 |
|---|---|---|
| 1 | p+ |
它匹配任何包含至少一个p的字符串。 |
| 2 | p* |
它匹配任何包含零个或多个p的字符串。 |
| 3 | p? |
它匹配任何包含零或一个p的字符串。 |
| 4 | p{N} |
它匹配任何包含N个p序列的字符串 |
| 5 | p{2,3} |
它匹配任何包含两个或三个p序列的字符串。 |
| 6 | p{2, } |
它匹配任何包含至少两个p序列的字符串。 |
| 7 | p$ |
它匹配任何以p字符末尾的字符串。 |
| 8 | ^p |
它匹配任何以p字符开头的字符串。 |
例子
以下示例将详细说明有关匹配字符的概念。
| 编号 | 表达式 | 描述 |
|---|---|---|
| 1 | [^a-zA-Z] |
它匹配任何不包含范围从a到z和A到Z的字符的字符串。 |
| 2 | p.p |
它匹配任何包含p字符,后跟任何字符,然后是另一个p字符的字符串。 |
| 3 | ^.{2}$ |
它匹配任何包含两个字符的字符串。 |
| 4 | <b>(.*)</b> |
它匹配<b>和</b>中的任何字符串。 |
| 5 | p(hp)* |
它匹配任何包含p字符的字符串,然后是序列php的零个或多个实例。 |
预定义的字符范围
为了编程方便,可以使用几个预定义的字符范围,也称为字符类。 字符类指定了整个字符范围,例如字母表或整数集 -
| 编号 | 表达式 | 描述 |
|---|---|---|
| 1 | [[ |
它匹配任何包含字母字符aA到zZ的字符串。 |
| 2 | [[ |
它匹配任何包含数字0到9的字符串。 |
| 3 | [[ |
它匹配任何包含字母数字字符aA到zZ和0到9的字符串。 |
| 4 | [[ |
它匹配任何包含空格的字符串。 |
PHP正则表达式POSIX函数
PHP目前提供了七种使用POSIX式正则表达式搜索字符串的函数 -
| 编号 | 函数 | 描述 |
|---|---|---|
| 1 | ereg() | ereg()函数搜索由指定的字符串作为由模式指定的字符串,如果找到模式则返回true,否则返回false。 |
| 2 | ereg_replace() | ereg_replace()函数搜索由模式指定的字符串,如果找到,则用替换替换模式。 |
| 3 | eregi() | eregi()函数在由模式指定的字符串中搜索由字符串指定的字符串。 搜索不区分大小写。 |
| 4 | eregi_replace() | eregi_replace()函数的运行方式与ereg_replace()完全相同,除了在字符串中搜索模式不区分大小写。 |
| 5 | split() | split()函数将字符串分解为不同的元素,每个元素的边界都是基于字符串中模式的出现。 |
| 6 | sql_regcase() | sql_regcase()函数可以被认为是一个实用函数,将输入参数字符串中的每个字符转换为包含两个字符的括号表达式。 |
PERL样式正则表达式
Perl风格的正则表达式与它们的POSIX类似。POSIX语法几乎可以与Perl风格的正则表达式函数交替使用。实际上,可以使用前面的POSIX部分介绍的任何量词。
解释在PERL正则表达式中使用的一些概念。之后介绍与正则表达式相关的功能。
元字符
元字符只是一个字母字符,前面是一个反斜杠,用来给这个组合一个特殊的含义。
例如,可以使用'd'元字符搜索大额金额:/([d]+)000/,这里d将搜索任何数字字符串。
以下是可在PERL样式正则表达式中使用的元字符列表。
字符 描述
. 一个字符
s 一个空格字符(空格,制表符,换行符)
S 非空白字符
d 数字值 (0-9)
D 非数字值
w 一个单词字的字符 (a-z, A-Z, 0-9, _)
W 一个非单词字的字符
[aeiou] 匹配给定集合中的单个字符
[^aeiou] 匹配给定集合之外的单个字符
(foo|bar|baz) 匹配任何指定的替代品
修饰符
有几个修饰符使用正则表达式更容易,如区分大小写,多行搜索等。
字符 描述
i Makes the match case insensitive
m Specifies that if the string has newline or carriage
return characters, the ^ and $ operators will now
match against a newline boundary, instead of a
string boundary
o Evaluates the expression only once
s Allows use of . to match a newline character
x Allows you to use white space in the expression for clarity
g Globally finds all matches
cg Allows a search to continue even after a global match fails
PHP正则表达式PERL兼容函数
PHP提供以下函数来使用Perl兼容的正则表达式搜索字符串 -
| 编号 | 函数 | 描述 |
|---|---|---|
| 1 | preg_match() | preg_match()函数为模式搜索字符串,如果模式存在则返回true,否则返回false。 |
| 2 | preg_match_all() | preg_match_all()函数匹配字符串中所有出现的模式。 |
| 3 | preg_replace() | preg_replace()函数的运行方式与ereg_replace()类似,只是可以在模式和替换输入参数中使用正则表达式。 |
| 4 | preg_split() | 除了正则表达式被接受为模式的输入参数之外,preg_split()函数的运行方式与split()完全相同。 |
| 5 | preg_grep() | preg_grep()函数搜索输入数组的所有元素,返回匹配正则表达式模式的所有元素。 |
| 6 | preg_quote() | 引用正则表达式字符 |
本作品采用《CC 协议》,转载必须注明作者和本文链接
]]
]]
]]
]]
关于 LearnKu
推荐文章: