有条件的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