Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有条件的java正则表达式_Java_Regex - Fatal编程技术网

有条件的java正则表达式

有条件的java正则表达式,java,regex,Java,Regex,我有这样的情况 [msg "Invalid HTTP Request Line"] [data "CONNECT www.alipay.com:443 HTTP/1.1"] [severity "WARNING"] 我想匹配无效的HTTP请求行 我试着用这个 \]\s\[msg\s\"(.+)\"\]\s((\[data)|(\[severity)) 使用该正则表达式,直到[saverity为止,我的模式需要删除起始\]\s模式,并且还需要更改。+到。+?或者[^\]+因为默认情况下,.+是

我有这样的情况

[msg "Invalid HTTP Request Line"] [data "CONNECT www.alipay.com:443 HTTP/1.1"] [severity "WARNING"]
我想匹配无效的HTTP请求行

我试着用这个

\]\s\[msg\s\"(.+)\"\]\s((\[data)|(\[severity))

使用该正则表达式,直到[saverity

为止,我的模式需要删除起始\]\s模式,并且还需要更改。+到。+?或者[^\]+因为默认情况下,.+是贪婪的。它贪婪地匹配所有字符,直到出现在严重性之前的双引号

并从组索引1中获取所需的字符串

输出:

Invalid HTTP Request Line

你想根据什么规则来匹配它?如果您只想匹配该字符串,则正则表达式是无效的HTTP请求行。
String s = "[msg \"Invalid HTTP Request Line\"] [data \"CONNECT www.alipay.com:443 HTTP/1.1\"] [severity \"WARNING\"]";
Pattern pattern = Pattern.compile("\\[msg\\s\"([^\"]+)\"\\]\\s\\[(?:data|severity)");
Matcher m = pattern.matcher(s);
while(m.find())
{
    System.out.println(m.group(1));
}  
Invalid HTTP Request Line