我想匹配这些
<div class="name">a</div>
<div class="name">b</div>
<div class="name">c</div>
这样就足够了:<div class="name">(.*)<\/div>
??
或<div class="name">(.*?)<\/div>
?
以及为什么[<div class="name">](.*)[/div]
不匹配?
答案 0 :(得分:0)
<div class="name">.*?</div>
可能效果最好。使用贪婪版本<div class="name">.*</div>
会将多个<div>
匹配为一个,例如<div class="name">foo</div><div>bar</div>
整体匹配。
[<div class="name">](.*)[/div]
不起作用,因为方括号[]
表示字符类。那么模式的作用是:
[<div class="name">] // match one of the characters `<div clas="nme>` literally
(.*) // match any character except newline, any number of times
[/div] // match one of the characters `/div` literally
P.S。:请注意,<div class="name">.*?</div>
不能使用嵌套的<div>
。
例如。在
<div class="name">
<div>foo</div>
</div>
它只匹配
<div class="name">
<div>foo</div>
因为该模式仅使用字符串直到第一次出现</div>
。