java中正则表达式中的可选元素
我有这样的模式:java中正则表达式中的可选元素,java,regex,Java,Regex,我有这样的模式: "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3}) (\\d+|\\S+)" 我在以下apache访问日志条目中使用它: 127.0.0.1 - - [16/Jul/2011:20:29:14 +0100] "GET /TestWebPages/MScAIS-SEWN-Search-Optimisation.html HTTP/1.1" 200 5569 127.0.0.1-
"^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3}) (\\d+|\\S+)"
我在以下apache访问日志条目中使用它:
127.0.0.1 - - [16/Jul/2011:20:29:14 +0100] "GET /TestWebPages/MScAIS-SEWN-Search-Optimisation.html HTTP/1.1" 200 5569
127.0.0.1---[16/Jul/2011:20:29:14+0100]“获取/测试网页/MScAIS-SEWN-Search-optimization.html HTTP/1.1”200 5569
在第七元素之后的某个时候,我可能会或不会有什么东西。例如
127.0.0.1 - - [16/Jul/2011:20:29:14 +0100] "GET /TestWebPages/MScAIS-SEWN-Search-Optimisation.html HTTP/1.1" 200 5569 –
127.0.0.1--[16/Jul/2011:20:29:14+0100]“获取/测试网页/MScAIS-SEWN-Search-optimization.html HTTP/1.1”200 5569–
有时我在结尾处有-
,有时它根本不存在
如何将此添加到我的模式中?我试过使用(\\S{0})
,但没有成功 试试问号:
\S? (alternative \S{0,1})
或对于多次出现,使用星号:
\S* (alternative \S{0,})
尝试添加:(\\s–){0,1}
,这意味着您可以零次或一次出现“–”