【发布时间】:2015-07-29 15:52:06
【问题描述】:
我想使用正则表达式匹配 Unicode 字符。我发现这可以使用Unicode Category or Block 或更准确地使用这些Unicode Categories 和Supported Named Blocks。
问题是我无法使用LINQPAD 4 和Regex.IsMatch 函数使其工作。例如,尝试像这样匹配一个简单的拉丁字符:
Console.WriteLine(Regex.IsMatch("d", @"[\0000-\007F]+"));
引发以下错误:
ArgumentException4 解析 "[\0000-\007F]+" - [x-y] 范围反向 顺序。
并使用这个:
Console.WriteLine(Regex.IsMatch("d", @"\L{IsBasicLatin}{1}"));
给我:
解析“\L{IsBasicLatin}{1}” - 无法识别的转义序列 \L。
在我的实际情况中,我将用IsCyrillic 替换IsLatin,但我需要让它与拉丁语一起使用以确保它是OK。
谁能告诉我做错了什么?
【问题讨论】:
-
我相信您使用了错误的转义字符。查看手册:msdn.microsoft.com/en-us/library/20bw873z%28v=vs.110%29.aspx。您要查找的字符是 \p imo。
-
所有字符都是 Unicode。那么,问题是什么?
标签: c# .net regex unicode linqpad