如何分离正则表达式并获得每一次出现?

时间:2018-06-13 03:28:10

标签: regex

您好我有以下日志字符串。我希望每个出现的单独逗号。

srcnat: in:(none)(ether5) out:ether1, src-mac 11:aa:22:bb:33:cc, proto TCP (SYN), 10.5.59.207:49361->17.248.147.79:443, len 64

我想要

  

“srcnat:in :( none)(ether5)out:ether1”

     

“src-mac 11:aa:22:bb:33:cc”

     

“proto TCP(SYN)”

     

“10.5.59.207:49361->1.2.3.44:443”

我可以得到“srcnat:in :( none)(ether5)out:ether1”with regex(^ [^,] *)。我怎样才能分别获得其他人

2 个答案:

答案 0 :(得分:0)

由于你没有指定你的语言,我选择了Java,我更熟悉。用

分割
myString.split(,\s+(?=(?:(?:[^']*'){2})*[^']*$), -1)

这允许您用逗号后跟空格分隔,而忽略引号中的逗号。

答案 1 :(得分:0)

您可能需要的是正则表达式/([^,]+)(?=,)/g

这将匹配(在群组中)任何不是逗号的内容,直到找到逗号。

可以在 Regex101 或以下内容中看到:

var regex = /([^,]+)(?=,)/g;
var string = "srcnat: in:(none)(ether5) out:ether1, src-mac 11:aa:22:bb:33:cc, proto TCP (SYN), 10.5.59.207:49361->17.248.147.79:443, len 64";

console.log(string.match(regex));