繁体   English   中英

如何在 C# 中正则表达式中文字符?

[英]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}+

有关受支持类型的列表,请参阅 MSDN

这适用于其他字母表。 请参阅希腊语和拉丁语的示例

这可能有效:

\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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM