. net Regex替换单行匹配未知字符

本文关键字:未知 字符 单行匹 Regex 替换 net | 更新日期: 2023-09-27 18:10:42

这让我非常困惑。为什么我在以下代码中得到重复的替换字符串:

static void Main(string[] args)
{
    String input = "test";
    String pattern = ".*";
    String replacement = "replace";
    Console.WriteLine(Regex.Replace(input, pattern, replacement));
    Console.Read();
}

输出到控制台:

replacereplace

我理解regex得到奇怪的匹配结束行字符,但应该没有。我也明白,模式可以匹配什么,但显然输入不是什么。这发生在。net 3.5和4.0中,我在SingleLine和MultiLine中得到了同样的东西。

我知道有几个替代方案将做我所期望的,但我想知道更多的其他匹配。*认为它的发现。

. net Regex替换单行匹配未知字符

你得到两个替换的原因是你有两个匹配的.*: "test"""

如果您将.*更改为.+,它将按照您期望的方式工作:

String pattern = ".+";

另一个选项是添加字符串锚的开始:

String pattern = "^.*"; // I know this looks like a smiley

它先不匹配,然后再匹配所有内容,因此您有两个匹配和两个替换