【发布时间】:2018-03-29 12:11:41
【问题描述】:
我正在尝试使用一些 REST API 和 java 代码“玩转”。
由于我主要使用德语,我已经设法让 Apache HTTP 客户端使用 UTF-8 编码,以确保以正确的方式处理“元音变音”。
我仍然无法让我的正则表达式正确匹配我的话。
我尝试从..."type":"Büro_Licht"... 这样的字符串中找到像“Büro_Licht”这样的单词/单词组合。
使用正则表达式 ".*?type\":\"(\\w+).*?" 为我返回“B”,因为它无法将“ü”识别为单词字符。显然,因为 \w 被称为 [a-z A-Z 0-9]。在没有特殊字符的字符串中,我同时得到完整的“Office_Light”。
所以我尝试了这里提到的另一个提示,就像几乎相同的问题(我无法评论,因为我缺乏声誉点)。
使用正则表达式".*?type\":\"(\\p{L}).*?" 为我返回“Büro”。但是这里又一次因为我不明白的原因而削减了下划线。
有没有一种很好的方法可以结合这两个表达式来获得包含下划线和特殊字符的“完整”单词?
【问题讨论】:
-
这里只是一个评论,如果您尝试使用正则表达式解析 JSON,请不要。使用 JSON 解析器。
-
我首先尝试了 JSON,但在我看来,使用 HTTP 客户端处理 REST 请求更容易,就像纯文本和通过 URL 的 put/get 命令一样。为此,我为自己构建了一些方便的方法来处理纯文本,而正则表达式是其中的一部分;)
-
您正在构建自己的填充单元格,也就是说。相信我。
-
为什么不直接捕获任何字符,直到下一个
"? (即.*?type\":\"(.+?)(?<!\\)\",但是,无论如何不要用正则表达式解析 json) -
值得一试。似乎是合法的^^