【发布时间】:2021-01-31 04:05:49
【问题描述】:
我知道有类似的问题,但似乎没有一个符合我的要求。我是正则表达式的新手,仍在学习。感谢您对以下问题的任何帮助。
我有以下输入 json 数据。 PS:为了更好地理解我的问题,我已经简化了实际数据。
1.
{
"name": "abc",
"response": {
"postback": "UNIQUE-a651-95e4834b63cc",
"text": "testing"
},
"remarks": "get keyword"
}
{
"name": "abc",
"response": {
"postback": "a651-95e4834b63cc",
"text": "testing"
},
"remarks": "get keyword"
}
正则表达式
(UNIQUE)|(\"(response|someothedata|otherdata|somedata)\")
我想知道这些关键字中的哪一个是匹配的。在这里,如果存在“唯一”字段,它会变得更加棘手,它应该停在那里并且不再匹配。
我正在使用以下 java 代码
pattern = Pattern.compile("(UNIQUE)|(\"(response|someothedata|otherdata|somedata)\")")
Matcher matcher = pattern.matcher(message);
if(matcher.find()){
match = matcher.group();
}
对于两个输入 json,matcher.group() 返回 'response'
我想实现以下目标:
为 1. group() 返回 'UNIQUE'
2.返回“响应”,即仅当“唯一”不存在时
注意:一旦我得到匹配的词(匹配),就几乎没有基于此的操作,所以不能妥协
谁能帮助我如何以某种方式优先考虑“唯一”关键字?
【问题讨论】: