RegEx组不应以特殊字符开头

时间:2014-04-02 01:11:56

标签: regex

我有以下RegExp

^.+\s.+\s(?P<authuser>.+)\s\[.+\]\s"[A-Z]+\s.+ HTTP/\d.\d"\s(?P<status>200|304|204)\s

我应该如何修改它,它匹配除第一组中的 - (但包括 - 的字符串)之外的任何内容?

它应匹配前两行,但不匹配第三行:

37.77.82.109 - steitz [30/Mar/2014:00:22:23 +0100] "GET /eset_upd/update.ver HTTP/1.0" 304 -
37.77.82.109 - steitz-bla [30/Mar/2014:00:22:23 +0100] "GET /eset_upd/update.ver HTTP/1.0" 304 -
37.77.82.109 - - [30/Mar/2014:00:22:23 +0100] "GET /eset_upd/update.ver HTTP/1.0" 304 -

很多。

1 个答案:

答案 0 :(得分:0)

看起来负面的解决方案可以解决我的问题。

^.+\s.+\s(?P<authuser>(?!-).+)\s\[.+\]\s"[A-Z]+\s.+ HTTP/\d.\d"\s(?P<status>200|304|204)\s

但是可以肯定的是,这也与-bla不匹配(但问题中没有要求)