[英]Multiline regular expression not matching
我有一个正则表达式来获取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' -->
RegexOptions.Multiline
使正则表达式每行匹配一行。
您的意思是RegexOptions.SingleLine
。
从MSDN :
多行模式。 更改^和$的含义,以便它们分别在任何行的开头和结尾处匹配,而不仅仅是整个字符串的开头和结尾。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.