我需要在opResult之后和另一个字符串(word +'=')之前提取一个字符串

例如:


  testest = false opResult =不支持关键扩展random = abc srcPort = 10


因此,我应该在下一个带有等号的单词之前提取Critical extension not supported

另外,如果后面没有其他字符串,它也应该起作用,这意味着我应该在以下示例中得到相同的结果。


  typesOnly = false opResult =不支持关键扩展


我目前正则表达式提取了最后一个'='符号之前的所有内容。

opResult=(\S.*)(\s\w+=)

最佳答案

我们可以尝试使用以下模式进行匹配/提取:

.*opResult=(.*?)(?:\\s*\\S+=.*|$)


这里的技巧是能够清楚地表达下一个键何时开始,然后不提取它。

String line = "testest=false opResult=Critical extension not supported random=abc srcPort=10";
String pattern = ".*opResult=(.*?)(?:\\s*\\S+=.*|$)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
if (m.find( )) {
    System.out.println(m.group(1));
}


输出:

Critical extension not supported


演示在这里:

Rextester

10-06 09:16