我正在尝试添加一个与字符串中的某些unicode组一起使用的功能。我发现this question建议使用以下解决方案,该解决方案适用于所述范围内的unicodes:
s = Regex.Replace(s, @"[^\u0000-\u007F]", string.Empty);
这很好用。
在我的研究中,我遇到了use of unicode blocks,我发现它更具可读性。
InBasic_Latin = U+0000–U+007F
更常见的是,我看到建议人们使用实际代码本身(\u0000-\u007F
)而不是这些块(InBasic_Latin
)。当你需要该块的某个子集或特定的unicode时,我可以看到明确声明一个范围的好处,但是当你真的只想要使用块声明进行整个分组时,它的可读性和使用块名称的可编程性似乎更友好代替。
因此,一般来说,我的问题是为什么\u0000–\u007F
被认为是比InBasic_Latin
更好的语法?
答案 0 :(得分:1)
这取决于您的正则表达式引擎,但有些(如.NET,Java,Perl)支持Unicode块:
if (Regex.IsMatch(subjectString, @"\p{IsBasicLatin}")) {
// Successful match
}
其他人不喜欢(例如JavaScript,PCRE,Python,Ruby,R和其他大多数人),因此您需要手动拼出这些代码点或使用Steve Levithan's XRegExp library for JavaScript之类的扩展名。