将多行正则表达式中的字符串替换为行结束标记
本文关键字:结束 替换 正则表达式 字符串 | 更新日期: 2023-09-27 18:03:18
我得到了以下regex
var fixedString = Regex.Replace(subject, @"(:['w]+ ['d]+)$", "",
RegexOptions.Multiline);
不起作用。如果我使用'r'n
,它可以工作,但我想支持所有类型的换行符。正如另一个答案所述,我必须使用RegexOptions.Multiline
才能使用$
作为行结束符号(而不是字符串结束)。但它似乎没有帮助。
我做错了什么?
我不确定你想要实现什么,我想我明白了,你想要在行末尾替换换行符。
问题是$
是一个零宽度断言。它不匹配换行符,它匹配 'n
之前的位置。
你可以做不同的事情:
-
如果可以匹配下面所有换行符,也意味着后面所有空行,你可以这样做:
var fixedString = Regex.Replace(subject, @"(:['w]+ ['d]+)['r'n]+", "");
-
如果你只想匹配行后的换行符并保持空行,你必须为所有可能的组合创建一个模式,例如:
var fixedString = Regex.Replace(subject, @"(:['w]+ ['d]+)'r?'n", "");
这将匹配
'n
和'r'n
的组合