Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用正则表达式从json路径提取多个令牌_Java_Regex_Token - Fatal编程技术网

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]