regular expression(regex、regexp、RE)
1.元字符:
- . :匹配字母或数字或下滑线或汉字
- \w : 匹配字母或数字或下滑线或汉字
- \s :匹配任意的空白符
- \d : 匹配数字(digit)
- \b :匹配单词边界
- ^ : 匹配字符串开始
- $ : 匹配字符串结束
2.it is often used 的限定符(repetition)
- * : 重复零次或更多次
- + : 重复一次或更多次
- ? : 重复零次或一次
- {n} : 重复n次
- {n,}:重复n次或更多次
- {n,m}:重复n到m次
3.range
- [] 使用中括号表示范围
- [abc] 等价于 a|b|c
- [a-z] 表示匹配所有的小写字母
- [A-Z] 表示匹配所有的大写字母
- [A-z] 表示匹配所有的字母(包含大小写)
- [0-9] 表示匹配所有的数字
4.反义
- \W 匹配任意不是字母,数字,下划线,汉字的字符
- \S 匹配任意不是空白符的字符
- \D 匹配任意非数字的字符
- \B 匹配不是单词开头或结束的位置
- [^x] 匹配除了x以外的任意字符
- [^aeiou] 匹配除了aeiou这几个字母以外的任意字符
5.分组语法(零宽寡断)
- (?=exp):匹配exp前面的位置
- (?<=exp):匹配exp后面的位置
- (?!exp):匹配后面跟的不是exp的位置
- (?<!exp):匹配前面不是exp的位置
6.贪婪和懒惰
贪婪:当正则表达式中包含能接受重复的限定符时
,通常的行为是
(在使整个表达式能得到匹配的前提下)
匹配尽可能多的字符
这被称为贪婪匹配。
懒惰:有时,我们更需要懒惰匹配,
也就是匹配尽可能少的字符。
如果将前面给出的限定符转化为懒惰匹配模式,
只要在它后面加上一个问号?
表5.懒惰限定符
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
例如上面1.7中的例子:
<img οnlοad="AutoResizeImage(200,200,this)"src="/Document/Title/Temp/2017-12-114bc5.png" >
<img οnlοad="AutoResizeImage(200,200,this)"src="/Document/Title/Temp/2017-12-114bc5.png" >
<img οnlοad="AutoResizeImage(200,200,this)"src="/Document/Title/Temp/2017-12-114bc5.png" >
上面的正则表达式为:(?<=Document/Title/Temp/).+(?=\")
onload.+(?=src)
正确正则匹配法:(?<=Document/Title/Temp/).+?(?=\")
onload.+?(?=src) }
附件:本文发表链