. 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中得到了同样的东西。
我知道有几个替代方案将做我所期望的,但我想知道更多的其他匹配。*认为它的发现。
你得到两个替换的原因是你有两个匹配的.*
: "test"
和""
。
如果您将.*
更改为.+
,它将按照您期望的方式工作:
String pattern = ".+";
另一个选项是添加字符串锚的开始:
String pattern = "^.*"; // I know this looks like a smiley
它先不匹配,然后再匹配所有内容,因此您有两个匹配和两个替换