我正在处理一个大日志文件,其条目如下:
-- "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 到第一个空格' '
)。
请问谁能告诉我哪里错了?