Java 比较非英语字符

Java 比较非英语字符,java,regex,string,Java,Regex,String,我在尝试比较“Đ”和“D”时遇到问题,需要返回true,但Locale English返回false,因为“Đ”不能替换为正则表达式: “\\p{Block=CombiningDiacriticalMarks}+”字符类[\u0110D]将匹配aĐ或D(Đ是代码点U+0110) 匹配非英语字符,入门 一个常见的例子是“超级极客”这个词。我如何匹配这个词,无论在u上面是否有一个umlaut?简单:[\u0252u]ber geek将匹配“über geek”或“uber geek” 根据正则表达式

我在尝试比较“Đ”和“D”时遇到问题,需要返回true,但Locale English返回false,因为“Đ”不能替换为正则表达式:


“\\p{Block=CombiningDiacriticalMarks}+”

字符类
[\u0110D]
将匹配aĐ或D(Đ是代码点U+0110)

匹配非英语字符,入门 一个常见的例子是“超级极客”这个词。我如何匹配这个词,无论在u上面是否有一个umlaut?简单:
[\u0252u]ber geek
将匹配“über geek”或“uber geek”

根据正则表达式引擎的不同,有多种很好的方法来匹配特定于区域设置的字符。买一本关于你的具体实现的书来发现它的缺点。顺便说一下,您可以在Regular Expressions.info上找到一个极好的Unicode特定正则表达式信息资源

如果我想匹配任何字符怎么办?如果您有权访问
\X
字符类,它将在Unicode上下文中充当
。这意味着组合成一个图形的多个Unicode代码点将作为一个“字符”注册到引擎


注意:我不是想“窃取”这个问题的答案,如果特德·霍普将他的答案从评论中删除,我会删除我的答案。我只是想确保寻找非英语正则表达式匹配项的人可以看到这个问题确实得到了回答。

你能试试
“[\u0110D]”
?(Đ是代码点U+0110)@TedHopp:不,只是
[\u0110]
,它不是一个combination@CasimiretHippolyte-据我所知,OP希望“Đ”与“D”匹配,反之亦然。字符类就是这样做的:为了匹配的目的,将类中的所有字符视为等价的。非常感谢!我明白了,我解决了我的问题@啊,好的!我相信
\u0110D
只代表
Đ