0

我是java中正则表达式解析的新手。我想解析包含记录的字符串。但我只想选择该记录的选定部分。

\"6\":\"Services Ops\",\"practice_name\":\"Services Ops\",\"7\":\"Management\",

为此,我将正则表达式写为

(^\\\"6\\\":\\\"[A-Za-z \s]*)

上面的表达式给了我结果:\"6\":\"Services Ops\

我只想Service Ops

还有像 \"5"\:\"xxx"\ 这样的多条记录,因此如果我只写表达式,Service Ops那么来自其他字段的条目也会包含在表达式的结果中。

有什么方法可以选择以 some 开头的字符串,pattern但我们可以排除该模式。

就像上面的例子一样,字符串以开头,\"6\":\"但我们可以排除这部分,只得到Service Ops结果。

谢谢你。

4

1 回答 1

3

您可以使用仅执行检查但不匹配的环视:

lookahead (?=...)
lookbehind(?<=...)

例子:

(?<=\\\"6\\\":\\\")[^\"]++(?=\")

另一种方法是使用捕获组(...)

\\\"6\\\":\\\"([^\"]++)\"

然后你可以只提取组的内容。例子:

Pattern p = Pattern.compile("\\\"6\\\":\\\"([^\"]++)\"");
Matcher m = p.matcher(yourString);
if (m.matches()) {
    System.out.println(m.group(1));
}
于 2013-07-30T03:29:47.513 回答