正则表达式
推荐学习正则表达式的书 《正则表达式必知必会》 外国翻译来的 例子由浅入深很好懂
.匹配除换行以外任意一个字符
[0-9]匹配0-9
[^0-9]匹配除0-9以外的字符
{2}连续匹配2次
*匹配出现0次或者多次
^匹配开头
$匹配结尾
+匹配1次或者以上
?匹配0次或者一次
\d 匹配数字
\D匹配非数字
\w匹配字母和数字、下划线
\W匹配非字母和非数字、非下划线
\s任意一个空白字符
\S任意一个非空白字符
\b匹配一个单词的开始和结尾 如果要匹配一个单词,则需要开始和结尾都加上\b
\B匹配有边界的字符
()子表达式,可嵌套
\n换行
\r回车
在windows中匹配空行正则表达式为:\n\r\n\r
在linux中匹配空行正则表达式为:\n\n
综合正则表达式为:(\n\r?){2}
?=向前查找,表示如果查找出来但是不显示该字符
文本
http://www.forta.com/
https://mail.forta.com/
ftp://ftp.forta.com/
正则表达式
.+(?=:)
结果
http://www.forta.com/
https://mail.forta.com/
ftp://ftp.forta.com/
?<=向后查找
文本
ABC01: $23.45
HGG42: $5.31
CFMX1: $899.00
XTC99: $69.96
Total items found: 4
正则表达式
(?<=\$)[0-9.]+
结果
ABC01: $23.45
HGG42: $5.31
CFMX1: $899.00
XTC99: $69.96
Total items found: 4
嵌入条件:
?(匹配规则1)匹配规则2|匹配规则3(可省略)
当匹配规则1匹配成功 则使用匹配规则2 不成功则使用匹配规则3
回溯替换:
文本
Hello, ben@forta.com is my email address.
正则表达式
(\w+[\w\.]*@[\w\.]+\.\w+)
替换
<A HREF="mailto:$1">$1</A>
结果
Hello, <A HREF="mailto:ben@forta.com">ben@forta.com</A>
is my email address.
贪婪匹配 与 懒惰匹配
.* .*?
例子:
<span>a</span><span>b</span>
匹配出 a 和 b
使用贪婪匹配
<span>(.*)</span>
结果:
<span>a</span><span>b</span>
使用懒惰匹配:
<span>(.*?)</span>
结果:
a b
为什么?
.匹配所有 除了换行 *重复0次或者多次
在匹配了<span>之后贪婪匹配.*会尽可能的多匹配 所以会把第一个</span>匹配进去,然后在接着匹配直到遇到最后一个</span>
匹配规则如下:
<span>(.*)</span>
<span>a</span><span>b</span>
而懒惰匹配会尽可能的少匹配 在遇到第一个</span>之后就会停止
浙公网安备 33010602011771号