【发布时间】:2014-07-19 17:49:30
【问题描述】:
我正在处理一个大日志文件,其条目如下:
-- "GET <b>/fss-w3-mtpage.php</b> HTTP/1.1" 200 0.084 41 "-" "c110bc/1.0" 127.0.0.1:25001 0.084
-- "GET <b>/m/firstpage/Services/getAll</b>?ids=ABCVDFDS,ASDASBDB,ASDBSA&requestId=091fa2b4-643e-4473-b6d8-40210b775dcf HTTP/1.1" 200
-- POST <b>/lastpage/Services/getAll</b>?ids=ABCVDFDS,ASDASBDB,ASDBSA&requestId=091fa2b4-643e-4473-b6d8-40210b775dcf HTTP/1.1" 200
我想提取上面示例中加粗的部分。这是我为上述内容编写的正则表达式
.*(POST|GET)\s+(([^\?]+)|([^\s]))
我想获取GET 或POST 之后的部分,直到第一次出现空格' ' 或问号'?'。
问题
正则表达式后面部分的逻辑 OR 不起作用。
如果我只使用
.*(POST|GET)\s+([^\?]+)
我得到了正确的部分,即从 GET 或 POST 到第一个问号 '?'。同样,如果我使用
.*(POST|GET)\s+([^\s]+)
我得到了正确的部分,即从 GET 或 POST 到第一个空格 ' ')。
谁能告诉我哪里错了?
【问题讨论】: