我正在使用Regex来获取HTML中两个字符串之间的字符串。在
Regex101正如预期的那样令人担忧。但是在.NET中它没有包装我想要的字符串。下面是代码:
html = Regex.Replace(html, @"(?<=<strong>CNPJ:)(.*?)(?=hddServidorCaptcha)\s*", string.Empty);
唯一的区别是我在网站上指定了/s
。但是.NET中的默认值是/g
。有没有办法改变它?
感谢
答案 0 :(得分:5)
您可以使用相同方法的overload:
html = Regex.Replace(html, @"(?<=<strong>CNPJ:)(.*?)(?=hddServidorCaptcha)\s*", string.Empty, RegexOptions.SingleLine);
答案 1 :(得分:3)
请勿将g
(全局)修饰符与s
(单行)又名( dotall )修饰符混淆。
g
(全局)修饰符意味着所有匹配项(不会在第一次匹配时返回)不存在,这就是为什么如果您返回多个匹配项,您将使用Regex.Matches()
方法结果
s
( dotall )修饰符允许点.
跨越换行符序列。默认情况下,点.
与新行序列不匹配。您只需在此处使用(?s)
内联修饰符:
@"(?s)(?<=<strong>CNPJ:)(.*?)(?=hddServidorCaptcha)"
^^^^