如何强制使用正则表达式.替换为匹配'/s'(将字符串视为单行)正则表达式修饰符
本文关键字:正则表达式 字符串 单行 何强制 替换 | 更新日期: 2023-09-27 18:03:39
我用一个正则表达式来获得HTML中两个字符串之间的字符串。在
Regex101按预期工作。但是在。net中,它没有包装我想要的字符串。下面是代码:
html = Regex.Replace(html, @"(?<=<strong>CNPJ:)(.*?)(?=hddServidorCaptcha)'s*", string.Empty);
唯一的区别是它指定了站点上的/s
。但是。net的默认值是/g
,有办法改变它吗?由于
您可以使用同一方法的重载:
html = Regex.Replace(html, @"(?<=<strong>CNPJ:)(.*?)(?=hddServidorCaptcha)'s*", string.Empty, RegexOptions.SingleLine);
不要将g
(全局)修饰符与s
(单行)aka (dotall)修饰符混淆。
g
(全局)修饰符意味着所有匹配(不返回第一个匹配)不存在,这就是为什么你会使用Regex.Matches()
方法,如果你返回多个匹配结果。
s
(dotall)修饰符,允许点.
跨换行序列。默认情况下,点.
不匹配换行符序列。您可以在这里简单地使用(?s)
内联修饰符:
@"(?s)(?<=<strong>CNPJ:)(.*?)(?=hddServidorCaptcha)"
^^^^