关于正则表达式的一些东西

2020-05-10 16:49:00
 技巧分享

这两天一直在研究匹配img标签的事情。然后今天(还是昨天来着)在别处搜索到了这个,感觉还是比较有帮助的。特此转载,侵删。
原文:正则匹配<img> - 爱冯果

正则匹配<img>

preg_match_all('/<img(.*?)src=\"(.*?)\"(.*?)>/is', $content, $matches);

matches[0]:整个img标签
matches[2]:图片的url

正则回顾

$:表示行结尾
^:表示行开始 或者 表示排除不符合的字符,^一般放在[]中。如[^1-5],该字符不是1~5之间的数字。
|:表示或者
.:表示任意字符

?:表示出现0到一次
*:表示出现0到多次
+:表示出现1到多次
{n}:表示出现n次
{n,}:表示至少出现n次
{n,m}:表示出现n到m次

\d:任意一个十进制数字[0-9]
\D:任意一个非十进制数字
\s:任意一个空白字符(空格、换行符、换页符、回车符、字表符)
\S:任意一个非空白字符
\w:任意一个单词字符
\W:任意个非单词字符

修饰符:

i:忽略大小写
s:单行文本模式
m:多文本模式
x:忽略空白字符

括号字符()

在正则表达式中小括号的作用主要有:

  • 改变限定符如|*^的作用范围
    (my|your)baby,如果没有()|将匹配的是要么是my,要么是yourbaby,有了小括号,匹配的就是mybaby或yourbaby
  • 进行分组,便于反向引用

反向引用

反向引用,就是依靠子表达式的“记忆”功能,匹配连续出现的字串或是字符。如(dqs)(pps)\1\2表示匹配字符串dqsppsdqspps

转义字符

转义字符主要是将一些特殊字符转为普通字符。而这些常用特殊字符有.?\