0

我得到了以下正则表达式

var fixedString = Regex.Replace(subject, @"(:[\w]+ [\d]+)$", "", 
                                                        RegexOptions.Multiline);

这是行不通的。如果我使用它可以工作\r\n,但我想支持所有类型的换行符。作为另一个答案状态,我必须使用RegexOptions.Multiline才能$用作行尾标记(而不是字符串结尾)。但这似乎没有帮助。

我究竟做错了什么?

4

1 回答 1

2

我不确定你想要实现什么,我想我明白了,你还想替换行尾的换行符。

问题是$零宽度断言。它不匹配换行符,它匹配之前 \n的位置。

你可以做不同的其他事情:

  1. 如果可以匹配所有以下换行符,也意味着所有以下空行,您可以这样做:

    var fixedString = Regex.Replace(subject, @"(:[\w]+ [\d]+)[\r\n]+", "");
    
  2. 如果您只想匹配行后的换行符并继续跟随空行,则必须为所有可能的组合创建一个模式,例如:

    var fixedString = Regex.Replace(subject, @"(:[\w]+ [\d]+)\r?\n", "");
    

    这将匹配组合\n\r\n

于 2013-03-10T20:32:27.693 回答