如何使用C#Regexes匹配任意字符串中的最后一个字符?

Rom*_*kov 2 .net regex

显而易见的尝试是:

Regex.Replace(input, @".$", "X", RegexOptions.Singleline);
Run Code Online (Sandbox Code Playgroud)

但这并不总是有效.考虑一下这个字符串\r\n\r\n- 上面会产生令人惊讶的结果\r\nXX.人们可能期望从阅读MSDN(下多行),其$应该只是在整个字符串的结尾匹配,但显然$实际上是指"比赛在字符串的结尾或者在\n刚刚字符串结束前".

什么可能是匹配任意字符串的最后一个字符的正确方法?

Tim*_*mwi 8

.NET支持\z令牌,它始终匹配字符串的结尾:

Regex.Replace(input, @".\z", "X", RegexOptions.Singleline);
Run Code Online (Sandbox Code Playgroud)