我需要在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