[英]How to capture second word of an http status code using regex?
我想使用正則表達式捕獲http狀態代碼名稱。
這是日志文件條目示例文本:
Completed in 0.01434 (69 reqs/sec) | Rendering: 0.00006 (0%) | DB: 0.00220 (15%) | 404 Not Found [https://www.sample.com/page/soaps/1.xml]
眾所周知,http狀態代碼對於每個日志文件條目都是不同的。 可以是以下之一:
200 OK
401 Unauthorized
201 Created
422 Unprocessable Entity
302 Found
404 Not Found
我的捕獲組應包含以下任一內容:
OK
Unauthorized
Created
Unprocessable Entity
Found
Not Found
我當前的正則表達式表達式如下:
\D+(\d+(?:\.\d+)?\s*\([^)]+\))\D+(\d+(?:\.\d+)?\s*\([^)]+\))\D+(\d+(?:\.\d+)?\s*\([^)]+\))\D+(\d{1,3})\D+([A-Z]{2}|[A-Z][a-z]{1,12}(\s[A-Z][a-z]{1,10})?)\D+(\[.*\])\K
但是,如果您在www.regex101.com上運行它,則會看到它沒有用兩個詞(即Unprocessable Entity和Not Found)注冊一個http狀態代碼。
我究竟做錯了什么?
您可以使用此正則表達式
.*\| (\d+)\s+((?:\w|[^\S\r\n])*)
第一個捕獲組是錯誤代碼,第二個是消息。 請注意,這不會捕獲鏈接,如果沒有鏈接,它將起作用。 件如下
|
為了不捕獲換行符,我使用了雙負正則表達式。 \\S
表示沒有空格,我用^
。 因此[^S\\r\\n]
表示除換行外沒有空格字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.