PHP - 正则表达式

正则表达式只不过是字符本身的序列或模式.它们为模式匹配功能提供了基础.

使用正则表达式可以搜索另一个字符串中的特定字符串,可以用另一个字符串替换一个字符串,并且可以将字符串拆分为许多块.

PHP提供特定于两组正则表达式函数的函数,每个函数对应于某种类型的正则表达式.您可以根据自己的舒适度使用其中任何一种.

  • POSIX正则表达式

  • PERL样式正则表达式

POSIX正则表达式

POSIX正则表达式的结构与典型表达式的结构没有什么不同算术表达式:组合各种元素(运算符)以形成更复杂的表达式.

最简单的正则表达式是匹配单个字符(如g)的字符串,例如g,haggle等字符串或者包.

让我们解释一下POSIX正则表达式中使用的几个概念.之后我们将向您介绍与正则表达式相关的函数.

Brackets

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.NoExpression&说明
1

[^ a-zA-Z]

它匹配任何不包含从a到z和A到Z的任何字符的字符串.

2

pp

它匹配任何包含p的字符串,后跟任何字符,然后是另一个字符.

3

^.{2} $

它匹配任何包含两个字符的字符串.

4

< b>(.*)</b>

它匹配任何包含的字符串在< b>内和</b>.

5

p(hp)*

它匹配任何包含ap的字符串,后跟零个或多个序列php的实例.

预定义的字符范围

为了您的编程便利,有几个预定义的字符范围,也称为字符类,可用.字符类指定整个字符范围,例如,字母或整数集 :

Sr.NoExpression&说明
1

[[:alpha:]]

它匹配包含字母字符aA到zZ的任何字符串.

2

[[:digit:]]

它匹配任何包含数字0到9的字符串.

3

[[:alnum:]]

它匹配任何包含字母数字的字符串字符aA到zZ和0到9.

4

[[:space:]]

它匹配任何包含空格的字符串.

PHP的Regexp POSIX函数

PHP目前提供七种使用POSIX风格搜索字符串的函数正则表达式 :

Sr.No功能&说明
1ereg()

ereg()函数在string指定的字符串中搜索pattern指定的字符串,如果模式是发现,否则为假.

2ereg_replace()

ereg_replace()函数搜索模式指定的字符串如果找到则用替换替换模式.

3eregi()

eregi()函数在整个字符串中搜索由pattern指定的字符串指定的字符串.搜索不区分大小写.

4eregi_replace()

eregi_replace()函数的运行方式与ereg_replace完全相同( ),除了在字符串中搜索模式不区分大小写.

5split()

分割()函数将字符串分成各种元素,每个元素的边界基于字符串中模式的出现.

6spliti()

spliti()函数的运行方式与兄弟split()完全相同,只是它不区分大小写.

7sql_regcase()

可以将sql_regcase()函数视为实用函数,将输入参数字符串中的每个字符转换为包含两个字符的括号表达式.

PERL样式正则表达式

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的Regexp PERL兼容函数

PHP提供以下函数,用于使用与Perl兼容的正则表达式搜索字符串 :

Sr.No功能与说明
1preg_match()

preg_match()函数在string中搜索pattern,如果pattern存在则返回true,否则返回false.

2preg_match_all()

preg_match_all()函数匹配字符串中出现的所有模式.

3preg_replace()

preg_replace()函数就像ereg_replace()一样运行,除了正则表达式可用于模式和替换输入参数.

4preg_split()

preg_split()函数运行e与split()类似,只是正则表达式被接受为模式的输入参数.

5preg_grep()

preg_grep()函数搜索input_array的所有元素,返回与regexp模式匹配的所有元素.

6preg_ quote()

引用正则表达式字符