正则表达式只不过是字符本身的序列或模式.它们为模式匹配功能提供了基础.
使用正则表达式可以搜索另一个字符串中的特定字符串,可以用另一个字符串替换一个字符串,并且可以将字符串拆分为许多块.
PHP提供特定于两组正则表达式函数的函数,每个函数对应于某种类型的正则表达式.您可以根据自己的舒适度使用其中任何一种.
POSIX正则表达式
PERL样式正则表达式
POSIX正则表达式的结构与典型表达式的结构没有什么不同算术表达式:组合各种元素(运算符)以形成更复杂的表达式.
最简单的正则表达式是匹配单个字符(如g)的字符串,例如g,haggle等字符串或者包.
让我们解释一下POSIX正则表达式中使用的几个概念.之后我们将向您介绍与正则表达式相关的函数.
Brackets([])在上下文中使用时具有特殊含义常用表达.它们用于查找一系列字符.
Sr.否 | 表达式&说明 |
---|---|
1 | [0-9] 它匹配从0到9的任何十进制数字. |
2 | [az] 它匹配从小写字母a到小写字母z的任何字符. |
3 | [AZ] 它匹配从大写字母A到大写字母Z的任何字符. |
4 | [ aZ] 它匹配从小写字母a到大写字母Z的任何字符. |
上面显示的范围是通用的;您还可以使用范围[0-3]匹配范围从0到3的任何十进制数字,或范围[bv]以匹配范围从b到v的任何小写字符.
括号中的字符序列和单个字符的频率或位置可以用特殊字符表示.每个特殊字符都有特定的内涵. +,*,?,{int. range}和$ flags都遵循一个字符序列.
$ b序列的字符串$ b
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 它匹配任何字符串,在其开头有p. |
以下示例将清除您关于匹配字符的概念.
Sr.No | Expression&说明 |
---|---|
1 | [^ a-zA-Z] 它匹配任何不包含从a到z和A到Z的任何字符的字符串. |
2 | pp 它匹配任何包含p的字符串,后跟任何字符,然后是另一个字符. |
3 | ^.{2} $ 它匹配任何包含两个字符的字符串. |
4 | < b>(.*)</b> 它匹配任何包含的字符串在< b>内和</b>. |
5 | p(hp)* 它匹配任何包含ap的字符串,后跟零个或多个序列php的实例. |
为了您的编程便利,有几个预定义的字符范围,也称为字符类,可用.字符类指定整个字符范围,例如,字母或整数集 :
Sr.No | Expression&说明 |
---|---|
1 | [[:alpha:]] 它匹配包含字母字符aA到zZ的任何字符串. |
2 | [[:digit:]] 它匹配任何包含数字0到9的字符串. |
3 | [[:alnum:]] 它匹配任何包含字母数字的字符串字符aA到zZ和0到9. |
4 | [[:space:]] 它匹配任何包含空格的字符串. |
PHP目前提供七种使用POSIX风格搜索字符串的函数正则表达式 :
Sr.No | 功能&说明 |
---|---|
1 | ereg() ereg()函数在string指定的字符串中搜索pattern指定的字符串,如果模式是发现,否则为假. |
2 | ereg_replace() ereg_replace()函数搜索模式指定的字符串如果找到则用替换替换模式. |
3 | eregi() eregi()函数在整个字符串中搜索由pattern指定的字符串指定的字符串.搜索不区分大小写. |
4 | eregi_replace() eregi_replace()函数的运行方式与ereg_replace完全相同( ),除了在字符串中搜索模式不区分大小写. |
5 | split() 分割()函数将字符串分成各种元素,每个元素的边界基于字符串中模式的出现. |
6 | spliti() spliti()函数的运行方式与兄弟split()完全相同,只是它不区分大小写. |
7 | sql_regcase() 可以将sql_regcase()函数视为实用函数,将输入参数字符串中的每个字符转换为包含两个字符的括号表达式. |
Perl风格正则表达式类似于它们的POSIX对应物. POSIX语法几乎可以与Perl样式的正则表达式函数互换使用.实际上,您可以使用前一个POSIX部分中介绍的任何量词.
让我们解释一下PERL正则表达式中使用的几个概念.之后我们将向您介绍与正则表达式相关的函数.
元字符只是一个字母字符,前面是反斜杠,表示行为给组合一个特殊的含义.
例如,你可以使用'\d'元字符搜索大笔金额:/([\d] + )000/,这里 \d 将搜索任何数字字符串.
以下是可以使用的元字符列表在PERL样式正则表达式.
Character Description. a single character \s a whitespace character (space, tab, newline) \S non-whitespace character \d a digit (0-9) \D a non-digit \w a word character (a-z, A-Z, 0-9, _) \W a non-word character [aeiou] matches a single character in the given set [^aeiou] matches a single character outside the given set (foo|bar|baz) matches any of the alternatives specified
有几个修饰符可以让你更容易使用正则表达式,如区分大小写,多行搜索等.
Modifier Descriptioni 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兼容的正则表达式搜索字符串 :
Sr.No | 功能与说明 |
---|---|
1 | preg_match() preg_match()函数在string中搜索pattern,如果pattern存在则返回true,否则返回false. |
2 | preg_match_all() preg_match_all()函数匹配字符串中出现的所有模式. |
3 | preg_replace() preg_replace()函数就像ereg_replace()一样运行,除了正则表达式可用于模式和替换输入参数. |
4 | preg_split() preg_split()函数运行e与split()类似,只是正则表达式被接受为模式的输入参数. |
5 | preg_grep() preg_grep()函数搜索input_array的所有元素,返回与regexp模式匹配的所有元素. |
6 | preg_ quote() 引用正则表达式字符 |