PHP正则表达式
正则表达式不过是字符本身的序列或模式。它们为模式匹配功能提供了基础。 使用正则表达式可以搜索另一个字符串中的特…
正则表达式不过是字符本身的序列或模式。它们为模式匹配功能提供了基础。
使用正则表达式可以搜索另一个字符串中的特定字符串,可以用另一个字符串替换一个字符串,并且可以将字符串拆分为许多块。
PHP提供特定于两组正则表达式函数的函数,每个函数都对应于某种类型的正则表达式。您可以根据自己的舒适度使用它们中的任何一种。
- POSIX正则表达式
- PERL样式正则表达式
POSIX正则表达式
POSIX正则表达式的结构与典型算术表达式的结构并无不同:各种元素(运算符)被组合起来形成更复杂的表达式。
最简单的正则表达式就是匹配诸如g,haggle或bag之类的字符串中的单个字符,比如g。
让我们来解释POSIX正则表达式中使用的一些概念。之后,我们将向您介绍与正则表达式相关的功能。
括号
括号([])在正则表达式的上下文中使用时有特殊含义。它们用于查找一系列字符。
Sr.No |
表达和描述 |
---|---|
1 |
[0-9] 它匹配从0到9的任何十进制数字。 |
2 |
[a-z] 它匹配从小写字母a到小写字母z的任何字符。 |
3 |
[A-Z] 它匹配从大写字母A到大写字母Z的任何字符。 |
4 |
[a-Z] 它匹配从小写字母a到大写字母Z的任何字符。 |
上面显示的范围是一般的; 您还可以使用范围[0-3]来匹配从0到3范围内的任意小数位,或范围[bv]以匹配范围从b到v的任何小写字符。
量词
括号字符序列和单个字符的频率或位置可以用特殊字符表示。每个特殊字符都有特定的内涵。+,*,?,{int。范围}和$标志都遵循字符序列。
Sr.No |
表达和描述 |
---|---|
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 它在任何字符串的开头匹配任何字符串。 |
例子
以下示例将清除有关匹配字符的概念。
Sr.No |
表达和描述 |
---|---|
1 |
[^a-zA-Z] 它匹配任何不包含范围从a到z和A到Z的字符的字符串。 |
2 |
p.p 它匹配任何包含p的字符串,后跟任何字符,然后依次跟随另一个p。 |
3 |
^.{2}$ 它匹配任何包含两个字符的字符串。 |
4 |
(.*) 它匹配和 b>中的任何字符串。
|
5 |
p(hp)* 它匹配任何包含ap的字符串,后跟php序列的零个或多个实例。 |
预定义的字符范围
为了您的编程方便,可以使用几个预定义的字符范围,也称为字符类。字符类指定整个字符范围,例如字母表或整数集 –
Sr.No |
表达和描述 |
---|---|
1 |
[[:alpha:]] 它匹配任何包含字母字符aA到zZ的字符串。 |
2 |
[[:digit:]] 它匹配任何包含数字0到9的字符串。 |
3 |
[[:alnum:]] 它匹配任何包含字母数字字符aA到zZ和0到9的字符串。 |
4 |
[[:space:]] 它匹配任何包含空格的字符串。 |
PHP的Regexp POSIX函数
PHP目前提供了七种使用POSIX风格的正则表达式搜索字符串的函数 –
Sr.No |
功能说明 |
---|---|
1 |
ereg() ereg()函数在由string指定的字符串中搜索由pattern指定的字符串,如果找到该模式,则返回true,否则返回false。 |
2 |
ereg_replace() ereg_replace()函数搜索由模式指定的字符串,并在找到替换模式时使用替换。 |
3 |
eregi() eregi()函数在由pattern指定的字符串中搜索由string指定的字符串。搜索不区分大小写。 |
4 |
eregi_replace() eregi_replace()函数的运行方式与ereg_replace()完全相同,只是在字符串中搜索模式不区分大小写。 |
5 |
spliti() split()函数将字符串分解为各种元素,每个元素的边界都基于字符串中的模式出现。 |
6 |
spliti() spliti()函数的运行方式与其兄弟split()完全相同,只是它不区分大小写。 |
7 |
sql_regcase() sql_regcase()函数可以被认为是一个效用函数,将输入参数字符串中的每个字符转换为包含两个字符的括号表达式。 |
PERL样式正则表达式
Perl风格的正则表达式与它们的POSIX相似。POSIX语法几乎可以与Perl风格的正则表达式函数交替使用。实际上,您可以使用前面的POSIX部分介绍的任何量词。
让我们解释PERL正则表达式中使用的几个概念。之后,我们将向您介绍与正则表达式相关的功能。
元字符
元字符只是一个字母字符,前面是一个反斜杠,用于给组合一个特殊的含义。
例如,您可以使用’ d’元字符搜索大笔金额: /([ d] +)000 / ,这里 d 将搜索任何数字字符串。
以下是可在PERL样式正则表达式中使用的元字符列表。
字符 描述 . 单个字符 s 一个空白字符(空格, tab, 新行) S 非空白字符 d 数字 (0-9) D 非数字 w 一个字符 (a-z, A-Z, 0-9, _) W 非字符 [aeiou] 在给定的集合里面匹配单个字符 [^aeiou] 在给定的集合外匹配单个字符 (foo|bar|baz) 匹配任意给定的字
修饰符
有几个修饰符可以使你的工作更容易,比如区分大小写,在多行中搜索等。
**Modifier Description** 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的Regexp PERL兼容函数
PHP提供以下函数用于使用Perl兼容的正则表达式搜索字符串 –
Sr.No |
功能说明 |
---|---|
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()函数搜索input_array的所有元素,返回与正则表达式模式匹配的所有元素。 |
6 |
preg_ quote() 引用正则表达式字符 |
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!