如何使用.net匹配Unicode字符
本文关键字:Unicode 字符 匹配 net 何使用 | 更新日期: 2023-09-27 17:49:28
我想使用正则表达式匹配Unicode字符。我发现这是可能的使用Unicode类别或块,或者更准确地使用这些Unicode类别和支持的命名块。
问题是我无法使用LINQPAD 4
和Regex.IsMatch
功能使其工作。例如,尝试匹配像这样的简单拉丁字符:
Console.WriteLine(Regex.IsMatch("d", @"['0000-'007F]+"));
引发以下错误:
ArgumentException4解析"['0000-'007F]+"- [x-y]范围反向秩序。
和使用this:
Console.WriteLine(Regex.IsMatch("d", @"'L{IsBasicLatin}{1}"));
给我:
解析"'L{IsBasicLatin}{1}" -无法识别的转义序列'L
在我的实际情况中,我将用IsCyrillic
替换IsLatin
,但我需要使其与拉丁语一起工作,以确保它是OK
。
谁能告诉我做错了什么?
您正在使用八进制字符表示而不是十六进制,这会创建一个无效范围(因为首先,'000
被解析为八进制字符,然后遇到0-'007
并导致错误,因为0
具有32
十进制代码)。
使用'x
或'u
符号,例如:
['x00-'x7F]+
这将捕获整个ASCII范围以及控制字符(包括。NULL符号)。
第二个问题,你需要使用'p
与脚本名称,例如
'p{IsBasicLatin}