正则表达式以匹配第二个字符串后的值(Java正则表达式解析器)

时间:2019-01-15 10:32:52

标签: java regex

我有以下字符串:

<134>1 2019-01-15T10:55:19.016+01:00 Foo Bar 12345 - [Question=Computer-Name Count="1" Computer-Name="IneedThisPart"]

提取我需要的部分“ IneedThisPart”(不带引号)所需的正则表达式是什么

Java regex解析器

2 个答案:

答案 0 :(得分:1)

要在字符串中查找该特定部分,可以使用此正则表达式,

Computer-Name="([^"]+)"

这将查找Computer-Name="文本,然后从(开始第1组,并捕获除"以外的所有文本,然后用)关闭该组,并进一步期望看到"并从组1查找数据。只要您以任何顺序在输入字符串中包含Computer-Name="IneedThisPart"数据,此正则表达式都将起作用。它将始终找到您想要的字符串。

这里是相同的Java代码。

String s = "<134>1 2019-01-15T10:55:19.016+01:00 Foo Bar 12345 - [Question=Computer-Name Count=\"1\" Computer-Name=\"IneedThisPart\"]";
Pattern p = Pattern.compile("Computer-Name=\"([^\"]+)\"");
Matcher m = p.matcher(s);
if(m.find()) {
    System.out.println(m.group(1));
} else {
    System.out.println("Didn't match");
}

打印

IneedThisPart

答案 1 :(得分:0)

根据语言更新

使用Java,您可以执行以下操作:

^.+"([^"]+)"

您将在第1组中找到所需的字符串

说明:

^           # beginning of string
  .+        # 1 or more any character
  "         # a quote
  (         # start group 1
    [^"]+   # 1 or more non quote
  )         # end group
  "         # a quote