当我尝试比较 'Đ' 和 'D' 时遇到问题,我需要返回 true,但 Locale English 返回 false,因为 'Đ' 不能用正则表达式替换:
"\\p{Block=CombiningDiacriticalMarks}+"
.
字符类[\u0110D]
将匹配 Đ 或 D(Đ 是代码点 U+0110)。
一个常见的例子是“über-geek”这个词。无论 u 上方是否有变音符号,我如何匹配该词?简单:[\u0252u]ber-geek
将匹配“über-geek”或“uber-geek”。
根据您的正则表达式引擎,有多种很好的方法可以匹配特定于语言环境的字符。购买一本关于你的具体实现的书,以发现它的皱纹。顺便说一句,您可以在 Regular-Expressions.info 的Unicode 页面上找到有关 Unicode 特定正则表达式信息的极好资源。
如果我想匹配任何字符怎么办?如果您有权访问字符类,它将在 Unicode 上下文中\X
充当 a 。.
这意味着组合形成一个字素的多个 Unicode 代码点将在引擎中注册为一个“字符”。
注意:我并不是要“窃取”这个答案的答案,如果 Ted Hopp 将他的评论移出,我将删除我的答案。我只是想确保寻找非英语正则表达式匹配的人可以看到这个问题确实得到了回答。