JavaScript正则表达式符号出现

JavaScript正则表达式符号出现,javascript,regex,Javascript,Regex,我对JS中的正则表达式有一些问题。我写了我的正则表达式: /^([A-Z]+)\s+([^\s]+)\s+([^\s]+)\s(\[.*\])\s+(.+)$/g 但有一个例子给出了错误的结果: WARN 2016-01-19 13:17:32,051 [localhost-startStop-1] Duplicate property values for key Data\ Df : [ Date from] and [ Starting Day] 我希望正则表达式将字符串分成以下

我对JS中的正则表达式有一些问题。我写了我的正则表达式:

/^([A-Z]+)\s+([^\s]+)\s+([^\s]+)\s(\[.*\])\s+(.+)$/g
但有一个例子给出了错误的结果:

WARN  2016-01-19 13:17:32,051 [localhost-startStop-1] Duplicate property values for key Data\ Df  : [ Date from] and [ Starting Day] 
我希望正则表达式将字符串分成以下几个部分:

WARN
2016-01-19
13:17:32,051
[localhost-startStop-1]
Duplicate property values for key Data\ Df  : [ Date from] and [ Starting Day]
除了最后两部分,一切都好。我得到了:

[localhost-startStop-1] Duplicate property values for key Data\ Df  : [ Date from]
and [ Starting Day]
为什么??我想把字符串的这部分除以第一次出现的次数。不知道为什么需要第二次

PS:下面是一个例子:


谢谢。

您需要限制
*
(尽可能多地匹配除换行以外的零个或多个字符)与匹配除换行以外的零个或多个字符的延迟点匹配
*?
,尽可能少:

^([A-Z]+)\s+([^\s]+)\s+([^\s]+)\s(\[.*?\])\s+(.+)$
                                    ^^^

您还可以通过将
[^\s]
替换为
\s
来稍微缩短模式:

^([A-Z]+)\s+(\S+)\s+(\S+)\s(\[.*?\])\s+(.+)$

var re=/^([A-Z]+)\s+(\s+)\s+(\s+)\s(\[.*?\])\s+(.+)$/gm;
var str='INFO 2016-01-20 08:03:21113[C3P0PooledConnectionPoolManager[identityToken->1bqu9pa9eq1cqr515yzwu7 | 6c240779]-已建立与“rander”的HelperThread-#0]连接。正在通知侦听器…\nWARN 2016-01-19 13:17:32051[localhost-startStop-1]关键数据的重复属性值[Df:[Date from]和[start Day];
while((m=re.exec(str))!==null){
document.body.innerHTML+=“”+JSON.stringify([m[1],m[2],m[3],m[4],m[5]],0,4)+“”;
}
您可以尝试以下方法:

  • ^(.*?)(\s*?)(\s*?)(\s*?)(\s*?)(\s*?)(\[.*?))(\s*)(.*?)$
还可以使用
更改
\S

  • \S
    表示不是sapce

  • 意味着获得更少

  • 这个句子的规则可以表达如下

    begin+word+space+word+space+word+space+word+space+word+space+word+end
    它必须先找到
    ]
    ,所以我们使用
    来找到它。 如果你想改变这个句子的格式,你可以用
    ($1)\r($3)\r($5)\r($7)\r($9)
    或其他


我只会将
/g
/m
一起使用。如果没有
/m
/g
就没有意义,因为模式锚定在开始和结束处。然后需要依赖延迟点匹配。我更新了答案。顺便说一句,您也可以在那里使用
\S+
,因为
[…]
中的字符串不包含空格。这是一个问题,因为有时它可能包含空格符号。例如:ERROR 2016-01-20 00:15:00352[GroovyScriptJob:eventGenerator-47]作业执行过程中出现异常,但乍一看,现在效果很好。目前我看不出有任何错误,没关系。不会有这样的事情