前言:
当前兄弟们对“正则匹配img标签”大约比较着重,我们都需要剖析一些“正则匹配img标签”的相关文章。那么小编同时在网上网罗了一些有关“正则匹配img标签””的相关知识,希望小伙伴们能喜欢,我们快快来了解一下吧!概述
•正则表达式是强大、便捷、高效的文本处理工具。
•正则表达式能够添加、删除、分离、叠加、插入和修改各种类型的文本和数据。
•使用正则表达式节省下来的时间或许并不能让人很激动,但总比把时间消耗在文本编辑器中要好
•正则表达式由元字符和文字组成,元字符指的是*、+、^等字符,文字指的是字母、数字等字符;元符通常用来描述文本。
元字符-匹配单个字符的元字符
元字符
匹配对象
.
点号
匹配单个任意字符
[…]
字符组
匹配单个列出的字符,如[abc]
[^…]
排除型字符组
匹配单个未列出的字符,如[^abc]
\char
转义字符
若char是元字符,或转义序列无特殊含义时,匹配char对应的普通字符
注:在字符组内部(并且不在第一个位置和最后一个位置),
‘-’连字符作为元字符表示一个范围,如[a-z];如果不在字符组内部,
连字符代表普通字符。
元字符-提供计数功能的元字符
元字符
匹配对象
?
问号
容许匹配一次,但非必须
*
星号
可以匹配任意多次,也可能不匹配
+
加号
至少匹配一次,至多可能任意多次
{min,max}
区间量词
到少需要min次,至多容许max次
元字符-匹配位置的元字符
元字符
匹配对象
^
脱字符
匹配一行的开头位置
$
美元符
匹配一行的结束位置
\<
单词分界符
匹配单词的开始位置
\>
单词分界符
匹配单词的结束位置
元字符-其它元字符
元字符
匹配对象
|
alternation
匹配任意分隔的表达式
(…)
括号
限定多选结构的范围,为反向应用捕获文本
\1,\2.. $1,$2..
反向引用
匹配之前的第一、第二组括号内的表达式匹配的文本
各种量词
•匹配优先量词
*、+、?、{min,max}
用ab*c去匹配abcde,肯定会匹配abc
•忽略优先量词
*?、+?、??、{min,max}?
用ab*?c去匹配acde肯定会匹配ac,不会返回什么都没匹配
•占有优先量词
*+、++、?+、{min,max}+
用(.*+)([0-9]+)去匹配aaaaa1,什么也匹配不到,一旦占有不再交还,目前只有java和php有
捕获分组和反向引用
•捕获分组:将某些规律看成是一组,然后进行组级别的重复,可以得到意想不到的效果,正则表达式中分组用()表示,不参与捕获分组又要使用括号用(?:)表示。
•反向引用:反向应用实际上应用的是正则表达式所匹配的文本值,而不是正则表达式字面值。
捕获分组和反向引用-示例1
文本样本(从中抽取出ip信息)::10.153.135.53:8611:4:::10.153.110.123:8611:1:::10.15.242.66:8611:4:::10.15.242.65:8611:4:::10.153.110.120:8611:1:::10.153.110.122:8611:1:::10.153.110.121:8611:1::正则表达式::([0-9.]+):([0-9]+):(.+)捕获分组和反向引用-示例2
文本样本(为图片相对路径增加绝对路径):<html><body> <div>12321321</div> <img src="/tv/pic/1.jpg"></img> <img src="/tv/pic/2.jpg"></img> <div>lasjdfljsadfpofdsahdsaf</div> <img src="/tv/pic/3.jpg"></img> <img src="/tv/pic/4.jpg"></img> <div>pwqipqpwepqweo;sdkf</div> <img src="/tv/pic/5.jpg"></img></body></html>正则表达式:<img\s+src="([0-9a-z/.]+)">替换为:<img src="\1">捕获分组和反向引用-示例3
正则表达式:([a-z]+)\s+\1替换为:\1If – then -else
正则表达式中的if-else结构用(?(condition)(reg1)|(reg2))举例(匹配img标签):<div><img src="123"></div>正则表达式:(<div>\s*)?(<img\s+[^>]+>)(?(1)\s*</div>)环视
环视不匹配任何字符,只匹配文本中的特定位置。
类型
正则表达式
匹配成功的条件
肯定逆序环视
(?<=…..)
子表达式能够匹配左侧文本
否定逆序环视
(?<!....)
子表达式不能匹配左侧文本
肯定顺序环视
(?=….)
子表达式能够匹配右侧文本
否定顺序环视
(?!....)
子表达式不能匹配右侧文本
环视-肯定顺序示例
提取特征数据样本示例:1234.txt456.javaabc.cpp9876.java正则表达式 .+(?=\.java)环视-格式化数字
样本示例(每三位逗号分隔数字):1234567890123456789056456823正则表达式:(?<=\d)(?=(\d{3})+$)固化分组
固化分组使用(?>…)实现,固化分组匹配与正常的匹配并无差别,但是如果匹配进行到此结构之后(也就是,进行到闭括号之后),那么此结构体中的所有备用状态都会被放弃(不能被回溯)。处理数字小数点,保留三位小数,第三位不能为零。样本:123123.45600000012345.6700001234789.78134.500000正则表达式:(\.\d\d(?>[1-9]?))\d+ 替换:\1
标签: #正则匹配img标签