特殊字符:.|*?+(){}[]^$,相当于语言的关键字,这些字符前面加转义符""表示字符本身,否则就作为正则表达式特殊用途字符。
.+?表示最小匹配,?表示非贪婪匹配
举例说明.+?与.+的区别
<a href="xxx"><span>
如果用<.+>匹配,则匹配结果是
<a href="xxx"><span>
如果用<.+?>匹配,则匹配结果是
<a href="xxx">
也就是.+?只要匹配就返回了,不会再接着往下找了
正则表达式:(?<=(href=")).{1,200}(?=(">))
解释:(?<=(href=")) 表示 匹配以(href=")开头的字符串,并且捕获(存储)到分组中
(?=(">)) 表示 匹配以(">)结尾的字符串,并且捕获(存储)到分组中
[ ] 方括号在这里被叫做原子表,它能够匹配括号中出现的任意一个元素
[abcd] //匹配abcd中任意一个字母 [!@#] // 匹配!@#中任意一个符号 [0-9] //匹配0,1,2,3,4,5,6,7,8,9中任意一个数字
三个常用的特殊符号: * + ?
-
- * 星号可以匹配前面出现的元素0次,1次或任意多次
- + 加号可以匹配前面出现的元素1次或任意多次
- ? 问号可以匹配前面出现的元素0次或1次
ab* //匹配 a,ab,abb,abbb....... ab+ //匹配 ab,abb,abbb,abbbb....... ab? //匹配 a,ab
( ) 圆括号在这里被叫做模式单元符,他能够将一些元素组合成一个大的,不可分割的新元素,类似于括号在正常运算中的作用。
(ab*)? //匹配 空串 或 a,ab,abb,abbb....... (ab+)? //匹配 空串 或 ab,abb,abbb,abbbb....... (ab?)? //匹配 空串 或 a,ab
匹配任意字符:.(除换行符)
a.c //匹配aac,abc,acc,adc.......
转义符 : 如果想要匹配本身拥有特殊意义的符号,可以使用转移符
. // 匹配一个小数点
边界限制字符:^ $
- ^ 匹配字符串的开始
- $ 匹配字符串的结束
^a.* //匹配以a开头的字符串 .*a$ //匹配以a结尾的字符串