c# - C#正则表达式中的"Enter"问题

标签 c# regex

那里 我对 C# 中的正则表达式有疑问, 代码:

// For 1D barcode scanner
Regex regex = new Regex("^(.*)\x0D$", RegexOptions.Compiled);
var match = regex.Match("1234\r");

match.Success 为真。然后我将代码更改如下:

 // For 2D barcode scanner
 Regex regex = new Regex("^(.*)$", RegexOptions.Compiled);
 var match = regex.Match("1234\r");

match.Success 仍然为真(预期为假)。我不知道错误在哪里。

实际上字符串“1234\r”是一维条码扫描器的结果,一维条码扫描器的后缀在我的软件中是“\x0D”,而二维条码扫描器的后缀在我的软件中是空的。认为二维条码的正则表达式一定有问题。

最佳答案

在默认设置下,$ 被解释为输入字符串的结尾,而不是一行的结尾。这将允许您的 .* 匹配任何可能添加的尾随空格。

如果你想排除这个,你可以用一个字符类来实现,比如 ^([^\r]*)$

关于c# - C#正则表达式中的"Enter"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35544533/

相关文章:

c# - 如何在 SQL Server 2008 上运行定期进程

c# - 在 asp.net (javascript) 中创建自定义的 "Yes/No"警报框 - 第 2 部分

java - 每次遇到字符时,在数组列表中拆分字符串

javascript - 正则表达式匹配css键值字符串

AWS 上 Redis 身份验证 token 的正则表达式

C# 库节点边图

c# - 使用 JSON.Net 解析 ISO 持续时间

regex - 在文件中找到正则表达式的第一个匹配项,并打印它

xml - 如何在所选属性上使用fn:replace?

c# - 位于我的命名空间中的类收到一个错误,指出它不在我的命名空间中