php正则表达式及涉及函数


元字符描述示例
.匹配任意单个字符。正则表达式 a.c 可以匹配 aac,a2c,a#c 等
$匹配字符串的结尾。正则表达式 abc$ 可以匹配最后以 abc 结尾的字符串
^匹配字符串的开始。正则表达式 ^what 可以匹配以 what 开始的字符串
*匹配 * 前面的子串零次或多次正则表达式 abc*d 可以匹配 abcd、aad、bd、bcd、d等字符串
+匹配 * 前面的子串一次或多次正则表达式 abc*d 可以匹配 abcd、aad、bd、bcd等字符串
{i}匹配指定个数的字符正则表达式 [0-9]{11} 可以匹配由11个数字字符组成的字符串
{i1,2}匹配个数在i1到i2范围的字符正则表达式 [0-9]{8,11} 可以匹配由8-11个数字字符组成的字符串
\转义符,将字符串中的元字符当作普通的字符匹配正则表达式 \*a 匹配 *a
[ ]匹配[]中的任何一个字符正则表达式 [ab]c 可以匹配 ac、bc
[c1-c2]在[]中使用连字符‘-’指定字符的区间正则表达式 [0-9] 可以匹配任何数字字符
[^c1-c2]匹配除了[]中的任意字符正则表达式 [^0-9] 匹配除了数字字符之外的任意字符
( )用于定义匹配的子模式 
|从多个选项中选择一个进行匹配正则表达式 (a|b|c) 可以匹配 a、b、c

----------------------------------------------------------------------------------------------------------------------------------|选择分支(或),注意使用”[]“与”|”的区别,在于”[]“只能匹配单个字符,而”|“可以匹配任意长度的字符串,例如要匹配com、edu或net就可以写作com|edu|net。.)匹配任意一个字符,但是当.在字符类([]中的内容)的开始或结尾时就只能是.。^在[]外表示从这开始,在括号内表示不包括,例如[^1-5],该字符不是1~5之间的数字。$表示到这结束,例如"^[A-Za-z]+$"表示由26个英文字母组成的字符串 。

判断字符串”I am a good boy“中是否包含单词go,可以使用\bgo\b,确保匹配的是一个完整的单词而不是单词的一部分。在字符串”I am a good boy“中没有单词go,使用\bgo\b就会提示匹配不到,而不使用\b就会匹配到”I am a good boy“。还有与之对应的\B意思相反。

在php正则表达式中,通过\n,来表示第n次匹配到的结果。如\5代表第五次匹配到的结果。

----------------------------------------------------------------------------------------------------------------------------------

不使用正则匹配的strstr函数

strstr() 函数搜索字符串在另一字符串中的第一次出现。

注释:该函数是二进制安全的。

注释:该函数对大小写敏感。如需进行不区分大小写的搜索,请使用 stristr() 函数。

注释:返回值是从搜索到的字符串到最后



不使用正则匹配的strpos函数

strpos() 函数查找字符串在另一字符串中第一次出现的位置。

注释:strpos() 函数对大小写敏感。(stripos不区分大小写,strrpos~最后一次~区分大小写,strripos不区分大小写)

注释:该函数是二进制安全的。


使用正则匹配的preg_math()和preg_match_all函数

preg_match() 第一次匹配成功后就会停止匹配,所以返回值为0或1。如果要实现全部结果的匹配,即搜索到结尾处,则需使用 preg_match_all() 函数。

preg_match("/php/", "php php php php php.", $matches); 

 print_r($matches); 

 preg_match_all("/php/", "php php php php php.", $matches); 

 print_r($matches);  

对应的输出

Array  
(  
    [0] => php  
)  
Array  
(  
    [0] => Array  
        (  
            [0] => php  
            [1] => php  
            [2] => php  
            [3] => php  
            [4] => php  
        )  
  
)  



php中贪婪匹配与惰性匹配

  • 贪婪匹配:匹配尽可能多的字符。 
    比如,正则表达式中m.*n,它将匹配最长以m开始,n结尾的字符串。如果用它来搜索manmpndegenc的话,它将匹配到的字符串是manmpndegen而非man。可以这样想,当匹配到m的时候,它将从后面往前匹配字符n。
  • 懒惰匹配:匹配尽可能少的字符。 
    在后面添加一个”?”可将贪婪匹配转变成懒惰匹配。如m.*?n匹配到的字符串是man。

----------------------------------------------------------------------------------------------------------------------------------

最后我要吐槽一下php正则表达式对于我这种笨笨的初学者来说真的好难,读一遍头都大,而且一脸懵逼

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值