【发布时间】:2016-02-22 01:44:36
【问题描述】:
那里 我对 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”,而在我的软件中二维条码扫描器的后缀是空的。我认为二维条码的正则表达式一定有问题。
【问题讨论】:
-
为什么应该是
false?.匹配除\n之外的任何字符。二维条码扫描器是否不允许返回\x0D作为其最后一个数据字符? -
当我使用后缀为“\X0D”的一维条码扫描器时,二维条码扫描器的正则表达式应该为假。物理二维条码没有后缀,所以它的正则表达式是“^(.*)$”。