簡體   English   中英

如何強制Regex.Replace匹配'/ s'(將字符串視為單行)正則表達式修飾符

[英]How to force Regex.Replace to match the '/s' (treat string as single line) regex modifier

我正在使用正則表達式來獲取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 (單行) akadotall )修飾符混淆。

g (全局)修飾符表示所有匹配(不在第一次匹配時返回)不存在,這就是為什么在返回多個匹配結果時使用Regex.Matches()方法的原因。

sdotall )修飾符允許點. 跨越換行序列。 默認情況下,點. 與換行序列不匹配。 你可以在這里簡單地使用(?s)內聯修飾符:

@"(?s)(?<=<strong>CNPJ:)(.*?)(?=hddServidorCaptcha)"

  ^^^^

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM