Java 正则表达式与德语"Umlaut" OR 下划线不匹配



我正在尝试"玩"使用一些REST API和JAVA代码。

当我主要使用德语时,我已经设法让Apache HTTP客户端与UTF-8编码一起使用,以确保" Umlaut"以正确的方式处理。

仍然我无法正确匹配我的单词。

我尝试找到"büro_licht"之类的单词/单词组合。从 ..."type":"Büro_Licht"...等字符串。

使用REGEX表达式".*?type":"(\w+).*?"返回" B&quot"对我来说,因为它不认识"ü"作为一个字符。显然, w据说是[A-Z A-Z 0-9]。在没有特殊字符的字符串中,我得到了完整的" Office_light"。同时。

所以我在这里尝试了另一个提到的提示,就像我无法发表评论,因为我缺乏声誉点(。

使用REGEX表达式".*?type":"(\p{L}).*?"返回"Büro"为我。但是在这里再次切断了下划线,原因是我不明白的原因。

有一种很好的方法来结合两种表达式以获得"完整"包括下划线特殊字符的单词?

如果您必须继续使用Regex,这不是解析JSON的好工具,请尝试p{L}_。在您的情况下,将是:

String regex = ".*?type":"[\p{L}_]+"";

在线示例:https://regex101.com/r/57ofd5/2

p {l}匹配任何语言的任何字母

_匹配字符_字面上(敏感(

,如果您需要支持其他语言,白色空间和其他各种UTF代码点,这将变得忙碌。例如,您是否需要支持:周围的白色空间随机数?看看有关删除表情符号的答案,有很多角案。

最新更新