我有一个DNS日志,如下所示:
17/04/2017 08:59:38 09DC PACKET 000000A939E64600 UDP Rcv 10.254.30.96 c650 Q [0001 D NOERROR] A (8)master11(10)teamviewer(3)com(0)
17/04/2017 08:59:38 09DC PACKET 000000A9404FABE0 UDP Rcv 10.254.30.87 9bae Q [0001 D NOERROR] A (7)master2(10)teamviewer(3)com(0)
17/04/2017 08:59:42 09E0 PACKET 000000A9404D15B0 UDP Rcv 10.254.35.43 fdcc Q [0001 D NOERROR] A (6)mobile(4)pipe(4)aria(9)microsoft(3)com(0)
17/04/2017 09:49:45 09E8 PACKET 000000A94194FE80 UDP Rcv 8.8.8.8 646d R Q [8381 DR NXDOMAIN] A (3)mta(3)dkf(2)com(0)在每一行的末尾,您将看到表示如下的域名:
(7)master2(10)teamviewer(3)com(0)我只想得到以下几部分:
master teamviewer com 并将空格替换为“。”得到这样的结果:
master2.teamviewer.com 为此,我使用了这个regex:
(?<=\)).*?(?=\()但不幸的是,我得到了一个错误:
Lookbehind is not supported in javascript有人对这个问题有什么建议或解决办法吗?谢谢
发布于 2017-05-04 11:05:58
发布于 2017-05-04 08:55:10
你可以试试这个:
\(\d+\)(?:[\w]+\(\d+\))+
const regex = /\(\d+\)(?:[\w]+\(\d+\))+/g;
const str = `17/04/2017 08:59:38 09DC PACKET 000000A939E64600 UDP Rcv 10.254.30.96 c650 Q [0001 D NOERROR] A (8)master11(10)teamviewer(3)com(0)
17/04/2017 08:59:38 09DC PACKET 000000A9404FABE0 UDP Rcv 10.254.30.87 9bae Q [0001 D NOERROR] A (7)master2(10)teamviewer(3)com(0)
17/04/2017 08:59:42 09E0 PACKET 000000A9404D15B0 UDP Rcv 10.254.35.43 fdcc Q [0001 D NOERROR] A (6)mobile(4)pipe(4)aria(9)microsoft(3)com(0)
17/04/2017 09:49:45 09E8 PACKET 000000A94194FE80 UDP Rcv 8.8.8.8 646d R Q [8381 DR NXDOMAIN] A (3)mta(3)dkf(2)com(0)
`;
let m;
while ((m = regex.exec(str)) !== null) {
console.log(m[0].split(/\(\d+\)/).filter(val => val).join("."));
}
https://stackoverflow.com/questions/43777678
复制相似问题