正则表达式新行不起作用



我想在括号之间获取文本。例如:


(a) 对于交割时应付给卖方的购买价款以外的款项,买方的未经认证的支票,最高金额为 $ {未经认证的检查限额} ;和

(b) {根据纽约市行政法典影响房舍的所有义务 在交割前发生并以现金支付的款项应由卖方在交割时或之前清偿。

卖方的陈述。


从这篇文章中,我想得到:

  1. {未经认证的检查限制}

  2. {根据纽约市行政法典,在交割前发生并以金钱支付的所有影响场所的义务应由卖方在交割时或之前履行。

我当前的正则表达式{(.*?)}不适用于新行。
我应该如何修改它?

点显式匹配除换行符以外的任何字符。使用RegexOptions.Singleline更改此行为并使点与任何字符匹配。

var regex = new Regex("{(.*?)}", RegexOptions.Singleline);

MSDN onRegexOptions.Singleline

指定单行模式。更改点 (.) 的含义,使其 匹配每个字符(而不是除 之外的每个字符)。

您的示例中的换行符在 html 中消失了,因此存在误解。

我可以建议你改用像{[^}]+}这样的正则表达式,Regex可以很好地处理换行符!

var result = Regex.Matches(txt, @"{[^}]+}")
.OfType<Match>().Select(c => c.Value).ToList();

[ C# 小提琴演示 ]

最新更新