正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。

平常很少用到正则表达式,因为在字符串那部分已经有很多函数,可以实现大部分需要的功能,比如字符串查找,截取,拼接,代替....但是在某些时候,php自己定义的字符串函数并不能解决复杂一点的问题。具体情况就看一下部分:

以下实例都是用 int preg_match_all($search,$str,$arr); 这个函数就是在$str中查找是否存在$search,并将结果保存在$arr中。先看参数,$str就是现有的、提供给你的,查找的范围就是这个字符串;$search为需要匹配的字符串,也就是查字典需要查的字;而$arr则是查询结果集,是一个数组。可用print_r()或者var_dump()打印结果。

例1、简单匹配字符串

<?php  
	$search=‘/test/‘;
	$str=‘asfkljsdfgtestkjflstestjfkls‘;
	$num=preg_match_all($search,$str,$arr);
	print $num;
	print_r($arr);
?>

 

 输出:2     Array ( [0] => Array ( [0] => test [1] => test ) )

表示在$str中匹配到两次‘test’。$search中需要的字符串用双斜线扩(//  称为分隔符)起来,还可以用||,##,!!,@@等扩起来。

一、元字符
常用的元字符:
\d 匹配一个数字字符
\D 匹配一个非数字字符
\s 匹配任意空白符(换行、空格、制表符等)
\S 匹配任意非空白符
\w 匹配字母、数字、下划线或者汉字
\W 匹配除字母、数字、下划线或者汉字以外的字符
\b 匹配单词的开始或结束
\B 匹配的不是单词的开始或结束
. 匹配出换行符意外的任意字符
^ 匹配字符串的开始
$ 匹配字符串的结束
- 表示范围
[] 表示匹配括号中的某一个字符,记住是一个
[^x] 匹配出x以外的任意字符
* 匹配前面一个字符出现0次,1次,或者多次
+ 匹配前面一个字符出现1次,或者多次
匹配前面一个字符出现0次,或者1次
{n} 匹配前面一个字符干好出现n次
{n,} 匹配前面一个字符至少出现n次
{n,m} 匹配前面一个字符至少出现n次,最多不超过m次
虽然元字符有这么多,但我已经按照规律排列好了,很好记忆。
例2、以{n,m}为例
<?php  
	$search=‘/te{3,5}st/‘;
	$str=‘abcteestabcteeestabc‘;
	$num=preg_match_all($search,$str,$arr);
	print $num;
	print_r($arr);
?>

 输出:1    Array ( [0] => Array ( [0] => teeest ) )

 



以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

攻破难啃的骨头-正则表达式(转)

正则表达式的贪婪和非贪婪模式