我正在尝试读取内容如下所示的日志文件:
127.0.0.1 - - [17/OCT/2009:00:02:14 0000] 获取 xxxxxx xxxx xxx
我尝试了以下reg exp,我得到了ERROR: Unclosed group near index 90
正则表达式 =(\d+\.\d+\.\d+\.\d+)\s-\s-\s\[(\d+)/(\w{3})/(\d{4}):(\d{2}):(\d{2}):(\d{2})\s(\d{4}\)].*
有人能帮我吗?
你忘了转义一些字符:
^(\d+\.\d+\.\d+\.\d+)\s-\s-\s\[(\d+)\/(\w{3})\/(\d{4}):(\d{2}):(\d{2}):(\d{2})\s(\d{4})\]
我认为应该转义“[”和“]”:[[]
and []]
or \[
and \]
.
对于 Java:
java.util.regex.Pattern.compile("(\\d+.\\d+.\\d+.\\d+)\\s-\\s-\\s\\[(\\d+)/(\\w{3})/(\\d{4}):(\\d{2}):(\\d{2}):(\\d{2})\\s(\\d{4})\\].*")
首先,用反斜杠转义 [ 和 ]。它们在正则表达式中具有特殊含义。
[ 和 ] 是特殊字符。这就是非封闭群的意思。根据您对正则表达式的风格,您需要在每个括号前面放置 1 \ 或 2 \。
正则表达式 = (\d+.\d+.\d+.\d+)\s-\s-\s[(\d+)/(\w{3})/(\d{4}):(\d{2 }):(\d{2}):(\d{2})\s(\d{4})].*
^\d+\.\d+\.\d+\.\d+\s-\s-\s\[\d{2}\/[A-Z]{3}\/\d{4}:\d{2}:\d{2}:\d{2}\s\d{4}]\sGET\s(.{6}\s.{4}\s.{3})$