gpt4 book ai didi

c# - .NET 的 Regex 类和换行符

转载 作者:太空狗 更新时间:2023-10-29 22:06:00 27 4
gpt4 key购买 nike

为什么 .NET 正则表达式不将\n 视为行尾字符?

示例代码:

string[] words = new string[] { "ab1", "ab2\n", "ab3\n\n", "ab4\r", "ab5\r\n", "ab6\n\r" };
Regex regex = new Regex("^[a-z0-9]+$");
foreach (var word in words)
{
Console.WriteLine("{0} - {1}", word, regex.IsMatch(word));
}

这是我得到的回应:

ab1 - True
ab2
- True
ab3

- False
- False
ab5
- False
ab6
- False

为什么正则表达式匹配 ab2\n

更新:我不认为Multiline是一个很好的解决方案,就是我想验证登录只匹配指定的字符,而且必须是单行。如果我更改 MultiLine 选项 ab1 的构造函数,ab2、ab3 和 ab6 匹配表达式,ab4 和 ab5 不匹配它。

最佳答案

如果字符串以换行符结尾,RegexOptions.Multiline 将不起作用。 $ 将忽略最后一个换行符,因为之后没有任何内容。

如果您想匹配到字符串的末尾并忽略任何换行符,请使用 \z

Regex regex = new Regex(@"^[a-z0-9]+\z", RegexOptions.Multiline);

这适用于 MutliLine 和 SingleLine,这无关紧要。

关于c# - .NET 的 Regex 类和换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/988951/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com