Javascript 单行正则表达式,匹配所有由空格分隔的单词

Javascript 单行正则表达式,匹配所有由空格分隔的单词,javascript,regex,regex-group,Javascript,Regex,Regex Group,我正在尝试创建一个正则表达式,它可以将上面的整行匹配为不同的组: 示例消息:2019-10-07 11:13:19.75纽约美国信息服务器已连接。服务器Id[34]地址[127.0.0.1:54266] 编辑:组由多个空格字符分隔,至少有2个空格字符,但通常为3个 EDIT2:消息部分中括号内的术语可能根本不出现,或者一个出现,另一个不出现,或者它们可能以不同的顺序出现 第一组:2019-10-07 11:13:19.75 第二组:纽约 第三组:美国 第四组:INFO 组5:服务器已连接。服务器

我正在尝试创建一个正则表达式,它可以将上面的整行匹配为不同的组:

示例消息:
2019-10-07 11:13:19.75纽约美国信息服务器已连接。服务器Id[34]地址[127.0.0.1:54266]

编辑:组由多个空格字符分隔,至少有2个空格字符,但通常为3个

EDIT2:消息部分中括号内的术语可能根本不出现,或者一个出现,另一个不出现,或者它们可能以不同的顺序出现

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

第二组:
纽约

第三组:
美国

第四组:
INFO

组5:
服务器已连接。服务器Id[34]地址[127.0.0.1:54266]

我还试图选择方括号([])内的任何内容,以及IP地址的特殊匹配情况。不过,这不必包含在同一个正则表达式中。如果可能的话,那就太好了

我能把各个小组的比赛进行得很好,但我似乎不能把所有的比赛都安排在一条线上

以下是我到目前为止的情况:

第一组:
/[0-9]{4}-[0-9]{2}-[0-9]{2}\s[0-9]{2}:[0-9]{2}:[0-9]{2}\[0-9]{2}/


第二组:
/(?我认为利亚姆和托马斯是对的,只需按
\s+
进行分割并调整值。

但我很好奇怎么注册这个

试试这个怪物:
《代码<<代码<<代码<<<代码<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<上述上述人士人士的<<{{4{{4{4{4{3}{{2{3{{{2}\3{{{{{2}}\缅甸缅甸缅甸缅甸{{{{3}}\\3}}\\\上述上述上述上述上述<<<<<<人士人士人士人士人士人士人士<<<<<<<<<<<<<<<<<<<上述上述上述上述人士人士人士人士人士人士人士人士人士人士<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<上述上述上述上述上述人士人士人士人士.\d{1,3}:\d{1,5}\])


这里:

我认为利亚姆和托马斯是对的,只需按
\s+
进行分割,然后调整值。

但我很好奇怎么注册这个

试试这个怪物:
《代码<<代码<<代码<<<代码<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<上述上述人士人士的<<{{4{{4{4{4{3}{{2{3{{{2}\3{{{{{2}}\缅甸缅甸缅甸缅甸{{{{3}}\\3}}\\\上述上述上述上述上述<<<<<<人士人士人士人士人士人士人士<<<<<<<<<<<<<<<<<<<上述上述上述上述人士人士人士人士人士人士人士人士人士人士<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<上述上述上述上述上述人士人士人士人士.\d{1,3}:\d{1,5}\])


这里:

我认为你做得太过分了,如果你知道你的分隔符至少有两个空格,只需按
\s{2,}
拆分即可:

const message=`2019-10-07 11:13:19.75纽约美国信息服务器已连接。服务器Id[34]地址[127.0.0.1:54266]`;
const groups=message.split(/\s{2,}/g)

console.log(groups);
我认为你做得太过分了,如果你知道你的分隔符至少有两个空格,只需按
\s{2,}
拆分即可:

const message=`2019-10-07 11:13:19.75纽约美国信息服务器已连接。服务器Id[34]地址[127.0.0.1:54266]`;
const groups=message.split(/\s{2,}/g)

console.log(组);
您如何知道
纽约美国
纽约
之间的区别?字符是什么在字段之间?多个空格字符,一个表格,或者其他什么?如果是多个空格字符,它们的数量是固定的还是根据字段的长度而变化?我想说,这太复杂了,你需要做的就是拆分字符串,不管是什么分隔字符,工作都完成了。如果你不能做到这一点,你的使用正则表达式不会有更多的乐趣,因为您仍然不知道除法字符是什么。这似乎是格式非常糟糕的数据,JSON或CSV将是发送类似
string.split(/\s{2,}/)的数据的更好选择
?假设字段本身永远不会包含超过一个连续空格是否合理?这将使解决方案变得简单(使用`{2,}`作为分隔符)您如何知道
纽约美国
纽约
之间的区别?字符是什么在字段之间?多个空格字符,一个表格,或者其他什么?如果是多个空格字符,它们的数量是固定的还是根据字段的长度而变化?我想说,这太复杂了,你需要做的就是拆分字符串,不管是什么分隔字符,工作都完成了。如果你不能做到这一点,你的使用正则表达式不会有更多的乐趣,因为您仍然不知道除法字符是什么。这似乎是格式非常糟糕的数据,JSON或CSV将是发送类似
string.split(/\s{2,}/)的数据的更好选择
?假设字段本身永远不会包含超过一个连续空格是否合理?这将使解决方案变得简单(使用`{2,}`作为分隔符)哇,太神奇了!不幸的是,我无法为我的应用程序使用.split。我可能会使用你的解决方案,即使它是一个怪物:)。我确实注意到,如果消息部分中没有括号内的术语,则它与任何组都不匹配。这些括号内的术语是可选的,可能根本不会出现,也可能以不同的顺序出现,或者多次出现。@Sam为什么不能使用split?这听起来像是一个@3limin4t0r,因为这是我需要提供给库的正则表达式.Wow太神奇了!不幸的是,我无法为我的应用程序使用.split。我可能最终会使用你的解决方案,即使它是一个怪物:)。我注意到,如果消息部分中没有括号内的术语,它与任何组都不匹配。这些括号内的术语是可选的,可能根本不会出现,或者它们可能出现在不同的组中租赁订单或可能多次出现。@Sam为什么不能使用split?这有点像@3limin4t0r,因为这是我需要提供给图书馆的正则表达式。