正则表达式
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 ) )
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性