我正在使用这个正则表达式:
127.0.0.1 -Raphane [10/Oct/2008:14:55:38 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326127.0.0.1 -Varane [10/Dec/2007:13:12:02 -0700] "GET /apache_pbs.gif HTTP/1.0" 404 2336
我正在尝试匹配时间戳和名称。我能够得到这个名称,但不是时间戳。
对于name,我首先匹配整个字符串并使用2个组在这个正则表达式的单个查询中查找2个名称:
^.*(\bRaphael\b)\s.*(\bVarane\b)\s.*
对于第二部分,请求是使用一个正则表达式查询来查找两个时间戳。
答案 0 :(得分:1)
(\[[^\]]+?\])
第1组与时间戳匹配。\-([A-Za-z]+?)[\s](\[[^\]]+?\])
组1匹配第一个匹配中的名称,组2匹配时间戳。 答案 1 :(得分:0)
如果来自:
127.0.0.1 -Raphane [10/Oct/2008:14:55:38 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326127.0.0.1 -Varane [10/Dec/2007:13:12:02 -0700] "GET /apache_pbs.gif HTTP/1.0" 404 2336
您希望收到:(Demo)
Match 1
Full match 10-46 `-Raphane [10/Oct/2008:14:55:38 -0700`
Group 1. 11-18 `Raphane`
Group 2. 20-46 `10/Oct/2008:14:55:38 -0700`
Match 2
Full match 96-131 `-Varane [10/Dec/2007:13:12:02 -0700`
Group 1. 97-103 `Varane`
Group 2. 105-131 `10/Dec/2007:13:12:02 -0700`
然后使用:~-([^\s]+)\s\[([^\]]+)~
\s
将匹配您的空白字符是空格还是制表符。
[^...]+
表达式是否定字符类,它们将贪婪地(最有效地)匹配方括号内未列出的一个或多个字符。领先的-
不需要使用反斜杠进行转义。
如果您特别希望将这两个名称与包含更多名称的较大文字相匹配,则可以使用:~-(Raphane|Varane)\s\[([^\]]+)~
Demo
答案 2 :(得分:0)
正则表达式/ - (\ S +)\ s [([^]] +)/
Match 1
Full match 10-46 `-Raphane [10/Oct/2008:14:55:38 -0700`
Group 1. 11-18 `Raphane`
Group 2. 20-46 `10/Oct/2008:14:55:38 -0700`
Match 2
Full match 96-131 `-Varane [10/Dec/2007:13:12:02 -0700`
Group 1. 97-103 `Varane`
Group 2. 105-131 `10/Dec/2007:13:12:02 -0700`
这是演示。