我正在尝试匹配简单(虚假)HTTP请求:
GET /path/to/file HTTP
,
GET /path/to/file HTTP/11
,
GET /path/to/file HTTP/1.1
我目前正在使用:
^GET.+?(?:HTTP)\/?[\d]*\.?[\d]*
但是,这也匹配GET /path/to/file HTTPfoobar
,我不想要。我如何制作这个布尔值?即匹配3个第一个模式中的任何一个,但没有其他任何东西。
答案 0 :(得分:0)
我将锚添加到最后,它按预期工作。通过将正向前瞻更改为非捕获组也可以简化。
还有人指出,该模式与GET /path/to/file HTTP123
类似,所以我添加了(?!\d)
。
我使用的最终expr是:^GET.+?(?:HTTP)(?!\d)\/?[\d]*\.?[\d]*$
严格匹配[...] HTTP / num.num的是^GET.+?(?:HTTP)(?:\/\d+(?:\.\d+))?$
,感谢Matt!