【发布时间】:2017-05-09 18:08:54
【问题描述】:
我无法匹配:SD: \u0002 使用:Regex.Match(@"SD: \u0002US^NE^STATE^12345^SOME NAME^\u0002\u0002STREETNAME\u0002ST\u0002\u0002\u00022115\u0004^NAME OF SOME ORG^^^ ", @"SD:\s\u0002")
根据 MS 文档,\u nnnn 应用于匹配 \u0002。
注意:字符串的来源是 ASCII 文件,用 Encoding.ASCII 读取,但 VS Studio 显示的是 Unicode \u0002 字符。
【问题讨论】:
-
第一个字符串以@为前缀,因此会按字面意思解释。然而,该模式将被解释为转义序列。从第一个字符串中删除 @。
-
为什么'u'和n's之间有空格?你在看什么 MS 文档?通常在大多数应用程序中没有空间。
-
删除@后,您还需要通过输入
\s+来匹配多个空格,并转义斜线,因为您不再拥有@:"SD:\\s+\u0002"。 -
显然 OmegaMan 真的想要积分,所以如果你愿意,请成为我的客人并接受他的抄袭答案,假设 Quantic 不介意,因为他也帮助回答了。我没有发布正式答案,因为我觉得这是一个简单的调试练习——真正的问题不在于问题所暗示的匹配 \u0002 。这是关于小心理解每个符号并重新阅读代码。这类问题可以通过缩减测试文本并打印出转义字符串以查看它们实际返回的内容来解决。下次还要注意你发布的数据。
-
"VS Studio 显示 Unicode \u0002 字符" 没错; .NET 字符串是 UTF-16 代码单元的计数序列。 UTF-16 是 Unicode 字符集的几种编码之一。