比较非英文字符

3
当我尝试比较 'Đ' 和 'D' 时遇到了问题,我需要返回 true,但是英文环境会返回 false,因为 'Đ' 无法使用正则表达式 "\\p{Block=CombiningDiacriticalMarks}+" 替换。

5
你可以尝试使用"[\u0110D]"吗?(Đ是Unicode编码U+0110的字符) - Ted Hopp
@TedHopp:不,只是[\u0110],它不是一个组合。 - Casimir et Hippolyte
3
据我理解,OP希望“Đ”和“D”可以互相匹配。字符类可以实现这一点:将类中的所有字符视为等效,以便进行匹配。 - Ted Hopp
@TedHopp:啊,好的!我以为\u0110D只代表Đ - Casimir et Hippolyte
1个回答

3
字符类[\u0110D]将匹配Đ或D(Đ是代码点U + 0110)。
非英语字符匹配入门
一个常见的例子是单词“über-geek”。无论u上面是否有变音符号,如何匹配该单词?简单: [\u0252u]ber-geek将匹配“über-geek”或“uber-geek”。
根据您的正则表达式引擎,有多种匹配特定于区域设置的字符的好方法。购买一本关于您特定实现的书籍以发现其细节。顺便说一句,您可以在Regular-Expressions.info的Unicode页面上找到有关Unicode特定正则表达式信息的优秀资源。
如果您可以访问\X字符类,则它将在Unicode上下文中充当.。这意味着,多个Unicode代码点组合成一个音素将被引擎注册为一个“字符”。
注意:我不想“偷”这个答案,如果Ted Hopp将其移出评论,我将删除我的答案。我只是想确保寻找非英语正则表达式匹配的人们可以看到这个问题确实得到了回答。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接