簡體   English   中英

一行正則表達式,匹配由空格分隔的所有單詞

[英]One Line Regex, match all words separated by whitespace

我正在嘗試創建一個正則表達式,可以將上面的整個行匹配到單獨的組中:

示例消息: 2019-10-07 11:13:19.75 New York America INFO Server is connected. Server Id [34] Address [127.0.0.1:54266] 2019-10-07 11:13:19.75 New York America INFO Server is connected. Server Id [34] Address [127.0.0.1:54266]

編輯:這些組由多個空格字符分隔,至少 2 個空格字符,但通常是 3 個。

EDIT2:消息部分中括號內的術語可能根本不出現,或者一個可能沒有另一個出現,或者它們可能以不同的順序出現。

第一組: 2019-10-07 11:13:19.75

Group2: New York

第三組: America

第 4 組: INFO

Group5: Server is connected. Server Id [34] Address [127.0.0.1:54266] Server is connected. Server Id [34] Address [127.0.0.1:54266]

我也在嘗試 select 方括號 ([ ]) 內的任何內容,以及 IP 地址的特殊匹配案例。 不過,這不必包含在同一個正則表達式中。 但如果可能的話會很好。

我已經能夠匹配各個組,但我似乎無法將其全部放在 1 行中。

這是我到目前為止所擁有的:

組 1: /[0-9]{4}-[0-9]{2}-[0-9]{2}\s[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{2}/

組2:/(?<=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}: /(?<=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\.\d{2}.*)\S+/

第三組:/(?<=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}: /(?<=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\.\d{2}.*\S.\s{3}).?\S+/

組4:/(?<=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}: /(?<=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\.\d{2}(.*\S.\s{3}){2}).?\S+/

第 5 組:/(?<=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}: /(?<=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\.\d{2}(.*\S.\s{3}){3}).*/

任何幫助將不勝感激。

我認為 Liam 和 Thomas 是對的,只是用\s+分割並修剪值。

但我很好奇如何正則表達式...

試試這個怪物:
(?<date>\d{4}-\d{2}-\d{2})\s+(?<time>\d{2}:\d{2}:\d{2}\.\d{2})\s+(?<city>(?:\S|\s(??\s))*)\s+(?<country>(:?\S|\s(??\s))*)\s+(?<level>INFO|WARN|ERROR)\s+(?<message>[^\[]+\[(,<serverid>\d+)\][^\[]+\[(.<serverip>\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,3}:\d{1,5})\])

這里:正則表達式101

我認為你已經完成了,如果你知道你的分隔符至少是兩個空格,只需用\s{2,} split

 const message = `2019-10-07 11:13:19.75 New York America INFO Server is connected. Server Id [34] Address [127.0.0.1:54266]`; const groups = message.split(/\s{2,}/g) console.log(groups);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM