我得到了以下正则表达式
var fixedString = Regex.Replace(subject, @"(:[\w]+ [\d]+)$", "",
RegexOptions.Multiline);
哪个不起作用。如果我使用\r\n
,它可以工作,但我想支持所有类型的换行符。正如another answer所述,我必须使用RegexOptions.Multiline
才能使用$
作为行尾令牌(而不是字符串结尾)。但它似乎没有帮助。
我做错了什么?
答案 0 :(得分:2)
我不确定你想要实现什么,我想我明白了,你想要替换行尾的换行符。
问题是$
是零宽度断言。它与换行符不匹配,它匹配之前的位置 \n
。
你可以做其他不同的事情:
如果可以匹配所有后续换行符,也意味着所有后面的空行都可以执行此操作:
var fixedString = Regex.Replace(subject, @"(:[\w]+ [\d]+)[\r\n]+", "");
如果您只想匹配行后的换行符并保持空行,则必须为所有可能的组合制作一个模式,例如:
var fixedString = Regex.Replace(subject, @"(:[\w]+ [\d]+)\r?\n", "");
这将与组合\n
和\r\n