扫码关注官方订阅号
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别?
<.*>
<.*?>
闭关修行中......
第一种写法是,尽可能多的匹配,就是匹配到的字符串尽量长,第二中写法是尽可能少的匹配,就是匹配到的字符串尽量短。比如<tag>tag>tag>end,第一个会匹配<tag>tag>tag>,第二个会匹配<tag>,如果要匹配到二个 >,就只能自己写了
<tag>tag>tag>end
<tag>tag>tag>
<tag>
>
第一个是贪心匹配,第二个是非贪心匹配
?在一般正则表达式里的语法是指得"零次或一次匹配左边的字符或表达式"相当于{0,1}
?
{0,1}
而当?后缀于*,+,?,{n},{n,},{n,m}之后,则代表非贪心匹配模式,也就是说,尽可能少的匹配左边的字符或表达式,这里是尽可能少的匹配.(任意字符)
*,+,?,{n},{n,},{n,m}
.
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
第一种写法是,尽可能多的匹配,就是匹配到的字符串尽量长,第二中写法是尽可能少的匹配,就是匹配到的字符串尽量短。
比如
<tag>tag>tag>end,第一个会匹配<tag>tag>tag>,第二个会匹配<tag>,如果要匹配到二个>,就只能自己写了第一个是贪心匹配,第二个是非贪心匹配
?在一般正则表达式里的语法是指得"零次或一次匹配左边的字符或表达式"相当于{0,1}而当
?后缀于*,+,?,{n},{n,},{n,m}之后,则代表非贪心匹配模式,也就是说,尽可能少的匹配左边的字符或表达式,这里是尽可能少的匹配.(任意字符)