我有一个正则表达式来获取HTML注释之间的所有数据。下面是我的正则表达式和我的HTML部分。
Dim rgx As New Regex("<!-- START data-contentid='([0-9]+)' -->((\s|.)*?)<!-- END data-contentid='([0-9]+)' -->", RegexOptions.Multiline Or RegexOptions.IgnoreCase)
此正则表达式正在运行,它将返回所需组的2个结果。奇怪的是这个:
如果我更改此内容:((\s|.)*?)
到此(.*?)
我的正则表达式停止工作,而.
代表任何字符。
为什么OR正则表达式正在工作的任何线索,但为什么这个DOT正则表达式不是?
<!-- START data-contentid='1151' -->
<div class="dyn-content content" data-contentid="1151">
The content
</div>
<!-- END data-contentid='1151' --><br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
AABB
<!-- START data-contentid='866' -->
<div class="dyn-content content" data-contentid="866">
<h1></h1>
ASBCSDFGGGGGGGGGGGGGGGGGGGGGGGGGG</div>
<!-- END data-contentid='866' -->
答案 0 :(得分:2)
RegexOptions.Multiline
每行生成正则表达式匹配行。
您的意思是RegexOptions.SingleLine
。
来自MSDN:
多线模式。更改^和$的含义,使它们分别匹配任何行的开头和结尾的,而不仅仅是整个字符串的开头和结尾。