![](/img/trans.png)
[英]How do I use regex in C# to match Chinese characters without also matching Japanese kana?
[英]how to regex chinese characters in C#?
我正在尝试使用 C# 中的正则表达式来匹配中文字符。
\p{Han}+
但是C#运行失败,说Unknown property Han
理论上我们可以通过正则表达式的Unicode Script来完成要求。
但是,C# 不支持 Unicode 脚本(但 Unicode 类别很好。)
它会像这样抛出ArgumentException
:
[System.ArgumentException: 解析 "\\p{Han}+" - 未知属性 'Han'。]
在 System.Text.RegularExpressions.RegexCharClass.SetFromProperty(String capname, Boolean invert, String pattern)
在 System.Text.RegularExpressions.RegexCharClass.AddCategoryFromName(String categoryName, Boolean invert, Boolean caseInsensitive, String pattern)
在 System.Text.RegularExpressions.RegexParser.ScanBackslash()
在 System.Text.RegularExpressions.RegexParser.ScanRegex()
在 System.Text.RegularExpressions.RegexParser.Parse(String re, RegexOptions op)
在 System.Text.RegularExpressions.Regex..ctor(String pattern, RegexOptions options, TimeSpan matchTimeout, Boolean useCache)
在 System.Text.RegularExpressions.Regex..ctor(字符串模式)
详细信息参考此处。
在 .Net 中,您需要在 Unicode 块属性前添加Is
。
我不知道 Han 对应的块是什么,或者是否支持,但是您可以尝试:
\p{IsHan}+
这适用于其他字母表。 请参阅希腊语和拉丁语的示例。
这可能有效:
\p{L}
这将允许来自任何字母表的字母,如果您只想要中文字符(没有英文字符),那么我可能需要更多时间。
另外,我假设您正确使用了 Regex,请使用 \\p{Han}+ 测试此代码以查看它是否仍然不起作用。
Regex regex = new Regex(@"\p{Han}+");///the requirement.
Match match = regex.Match("YourString");
if (match.Success)
{
Console.WriteLine("MATCH VALUE: " + match.Value);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.