我需要在opResult
之后和另一个字符串之前提取一个字符串(word +' =')
例如:
testest = false opResult =不支持临界扩展随机= abc srcPort = 10
所以我应该在下一个带有等号的单词之前提取Critical extension not supported
。
此外,如果后面没有其他字符串,它也应该有效,这意味着我应该得到与下面示例相同的结果。
typesOnly = false opResult =不支持关键扩展
正则表达式我目前在最后一个' ='之前提取了所有内容。登录。
opResult=(\S.*)(\s\w+=)
答案 0 :(得分:1)
我们可以尝试使用以下模式进行匹配/提取:
.*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
在这里演示:
答案 1 :(得分:0)
答案 2 :(得分:0)
我们需要在&lt; opResult =&#39;之后找到文字。在下一个空格(\ s)字(\ w +)之前跟一个等号(?==)以及后面的任何内容(。*)
模式变为
.*opResult=([\w|\s]+)(\s\w+(?==).*)
这是指向Regex101
的链接