暑假第五周练习(二)php学习--正则表达式

0×00 正则表达式语法规则

定义:正则表达式描述了一类字符串的特征,通过这个特征与特定的函数配合,对其它的字符串进行匹配、查找、替换及分割操作! 这类字符串的特征是由一个或多个。

0×01 定界符

我们一般习惯使用正斜线"/"作为定界的字符
当然除了字母、数字、和反斜线以外的字符都可以作为定界符,比如
#
!
{}
|
都是可以的!
定界符放在正则表达式的起始位置,前后一致!

0×02 普通字符

字符串的一些字符,比如:a-z、A-Z、0-9、双引号、单引号,它们没有特殊的含义。

0×03 元字符

记住一些常用的就行了。

    \d	匹配任意一个十进制数字,等价于[0-9]
	\D	匹配任意一个除十进制数字以外字符,等价于[^0-9]
	\s	匹配任意一个空白字符,比如换页符、换行符、回车符、制表符、垂直制表符
	\S	匹配除空白字符以外的任何一个字符
	\w	匹配任意一个数字或字母或下划线
	\W	匹配除数字、字母、下划线以外的任意一个字符
	.	匹配除换行符以外的任意一个字符
	
	*	匹配0次、或1次、或多次其前面的字符
	+	匹配1次或多次其前面的字符
	?	匹配0次或1次其前面的字符
	{n}	表示其前面字符恰好出现n次
	{n,}	表示其前面字符出现不少于n次
	{n,m}	表示其前面的字符至少出现n次,最多出现m次
	
	^或\A	匹配字符串开始位置
	$或者\Z	匹配字符串的结束位置
	
	|	匹配两个或多个模式
	
	[]	匹配方括号中的任意一个字符
	[^]	匹配除方括号中字符以外的任意一个字符
	()	将括号中作为一个整体以便将其中的内容获取到
		在我们的正则表达式中 可以使用圆括号来将某一段括起来,在圆括号的后面部分,我们可以使用
	\\  数字 来代表圆括号部分所匹配到的内容!
	

如果要匹配.我们可以使用\来转义。

0×04 模式修正符

常见模式修正符


	i	在和模式进行匹配时不区分大小写
	m	多行匹配,如果目标字符串 中没有"\n"字符, 或者模式中没有出现^或$, 设置这个修饰符不产生任何影响
	s	如果设定了此修正符,那么.将匹配所有的字符包括换行符
	U	禁止贪婪匹配
	e(已经被弃用)

0×05 与正则表达式配合的函数

主要有:

1.preg_match()
2.preg_match_all()
3.preg_replace()

①1.preg_match()

 preg_match — 执行匹配正则表达式

语法:
int preg_match ( string $pattern , string $ subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

各参数:

$pattern: 要搜索的模式,字符串形式。

$subject: 输入字符串。

$matches: 如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推。

$flags:flags 可以被设置为以下标记值:

PREG_OFFSET_CAPTURE: 如果传递了这个标记,对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的)。 注意:这会改变填充到matches参数的数组,使其每个元素成为一个由 第0个元素是匹配到的字符串,第1个元素是该匹配字符串 在目标字符串subject中的偏移量。

offset: 通常,搜索从目标字符串的开始位置开始。可选参数 offset 用于 指定从目标字符串的某个未知开始搜索(单位是字节)。

②preg_match_all()

preg_match_all 函数用于执行一个全局正则表达式匹配。

语法:
int preg_match_all ( string $pattern , string KaTeX parse error: Expected 'EOF', got '&' at position 18: …bject [, array &̲matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

两者区别:返回 pattern 的匹配次数。 它的值将是 0 次(不匹配)或 1 次,因为 preg_match() 在第一次匹配后 将会停止搜索。preg_match_all() 不同于此,它会一直搜索subject 直到到达结尾。 如果发生错误preg_match()返回 FALSE。

③preg_replace()

preg_replace 函数执行一个正则表达式的搜索和替换。

语法:

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int KaTeX parse error: Expected 'EOF', got '&' at position 19: …it = -1 [, int &̲count ]] )

搜索 string 中字符串并且匹配 pattern 的部分, 以 replacement 进行替换。

参数释义:

参数说明:

$pattern: 要搜索的模式,可以是字符串或一个字符串数组。

$replacement: 用于替换的字符串或字符串数组。

$string: 要搜索替换的目标字符串或字符串数组。

$limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。

$count: 可选,为替换执行的次数。

示例:

<?php
$string = 'google 123, 456';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = 'runoob ${2},$3';
echo preg_replace($pattern, $replacement, $string);
?>

结果:

runoob 123,456

如果 string 是一个数组, preg_replace() 返回一个数组, 其他情况下返回一个字符串。
如果匹配被查找到,替换后的 subject 被返回,其他情况下 返回没有改变的 subject。如果发生错误,返回 NULL。

正则表达式的初次见面结束了!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值