我正在尝试读取内容如下所示的日志文件:
127.0.0.1 - - [17/OCT/2009:00:02:14 0000] GET xxxxxx xxxx xxx
我尝试了以下reg exp,我得到了ERROR: Unclosed group near index 90
regex = (\d+\.\d+\.\d+\.\d+)\s-\s-\s\[(\d+)/(\w{3})/(\d{4}):(\d{2}):(\d{2}):(\d{2})\s(\d{4}\)].*
有人可以帮助我吗?
答案 0 :(得分:2)
你忘了逃避一些角色:
^(\d+\.\d+\.\d+\.\d+)\s-\s-\s\[(\d+)\/(\w{3})\/(\d{4}):(\d{2}):(\d{2}):(\d{2})\s(\d{4})\]
答案 1 :(得分:1)
我认为应该转义“[”和“]”:[[]
和[]]
或\[
和\]
。
对于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})\\].*")
答案 2 :(得分:0)
首先,使用后退逃脱[和]。它们在regexp中具有特殊含义。
答案 3 :(得分:0)
[和]是特殊字符。这就是未关闭集团的意思。根据你的正则表达式的风格,你需要在每个括号前放置1 \或2 \。
regex =(\ d +。\ d +。\ d +。\ d +)\ s- \ s- \ s [(\ d +)/(\ w {3})/(\ d {4}):( \ d {2}):(\ d {2}):(\ d {2})\ S(\ d {4})] *
答案 4 :(得分:0)
^\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})$