Java 使用正则表达式从json路径提取多个令牌
我必须从需要使用正则表达式匹配的文本中提取标记。示例文本如下所示Java 使用正则表达式从json路径提取多个令牌,java,regex,token,Java,Regex,Token,我必须从需要使用正则表达式匹配的文本中提取标记。示例文本如下所示 data.orderType.`order.created.time` 现在我正在使用下面的正则表达式来标记这个字符串 `(.*?)`|[^.]+ 这个正则表达式部分地标记了字符串,并给出如下标记 data,orderType,`order.created.time` 这里的问题是当令牌被取回时,tick也被包括在内。我怎样才能转储backtick并获得以下内容 data,orderType,order.created.ti
data.orderType.`order.created.time`
现在我正在使用下面的正则表达式来标记这个字符串
`(.*?)`|[^.]+
这个正则表达式部分地标记了字符串,并给出如下标记
data,orderType,`order.created.time`
这里的问题是当令牌被取回时,tick也被包括在内。我怎样才能转储backtick并获得以下内容
data,orderType,order.created.time
您已经捕获了backticks之间的部分,只需抓取
matcher.group(1)
,如果它参与了匹配(=如果匹配):
:
String s=“data.orderType.`order.created.time`”;
字符串regex=“`([^`]*)`.[^.`]+”;
列表结果=新建ArrayList();
Matcher m=Pattern.compile(regex.Matcher);
while(m.find()){
如果(m.group(1)!=null){
结果:添加(m组(1));
}否则{
结果.添加(m.group());
}
}
系统输出打印项次(结果);
//=>[数据、订单类型、订单.已创建.时间]
注意,我还向否定字符类添加了一个反勾号,[^.`]+
,因为我假设反勾号只能成对出现
String s = "data.orderType.`order.created.time`";
String regex = "`([^`]*)`|[^.`]+";
List<String> result = new ArrayList<>();
Matcher m = Pattern.compile(regex).matcher(s);
while (m.find()) {
if (m.group(1) != null) {
result.add(m.group(1));
} else {
result.add(m.group());
}
}
System.out.println(result);
// => [data, orderType, order.created.time]