Javascript 提取正则表达式中2个时间戳模式之间的日志消息

Javascript 提取正则表达式中2个时间戳模式之间的日志消息,javascript,regex,node.js,pattern-matching,Javascript,Regex,Node.js,Pattern Matching,我有下面的日志文件,正在使用NodeJS编写日志监控。我的解析器基于Regex,因此如果我在日志文件中收到可以转换为多个日志消息的新行,我应该能够提取它们。为此,我需要一个rtegex来提取variouys日志消息 Fri Jan 24 05:28:57 2014 MEMORY_TARGET defaulting to 1128267776. * instance_number obtained from CSS = 1, checking for the existence of node 0

我有下面的日志文件,正在使用NodeJS编写日志监控。我的解析器基于Regex,因此如果我在日志文件中收到可以转换为多个日志消息的新行,我应该能够提取它们。为此,我需要一个rtegex来提取variouys日志消息

Fri Jan 24 05:28:57 2014
MEMORY_TARGET defaulting to 1128267776.
* instance_number obtained from CSS = 1, checking for the existence of node 0... 
* node 0 does not exist. instance_number = 1 
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Initial number of CPU is 48
Number of processor cores in the system is 24
Number of processor sockets in the system is 12
Private Interface 'nxge20:1' configured from GPnP for use as a private interconnect.
abc
  [name='nxge20:1', type=1, ip=169.254.121.29, mac=00-21-28-0e-8c-ae-00-00-00-00-00-00-00-00-00-00-00-2f-ff-ff, net=169.254.0.0/16, mask=255.255.0.0, use=haip:cluster_interconnect/62]
Public Interface 'nxge0' configured from GPnP for use as a public interface.
  [name='nxge0', type=1, ip=172.20.70.18, mac=00-21-28-0e-94-ce-00-00-00-00-00-00-00-00-00-00-00-2f-ff-ff, net=172.20.70.0/24, mask=255.255.255.0, use=public/1]
Public Interface 'nxge21' configured from GPnP for use as a public interface.
  [name='nxge21', type=1, ip=100.100.100.1, mac=00-21-28-0e-8c-af-00-00-00-00-00-00-00-00-00-00-00-2f-ff-ff, net=100.100.100.0/23, mask=255.255.254.0, use=public/1]
Shared memory segment for instance monitoring created
CELL communication is configured to use 0 interface(s):
CELL IP affinity details:
    NUMA status: NUMA system w/ 3 process groups
    cellaffinity.ora status: cannot find affinity map at '/etc/oracle/cell/network-config/cellaffinity.ora' (see trace file for details)
CELL communication will use 1 IP group(s):
    Grp 0: 
Picked latch-free SCN scheme 3
Using LOG_ARCHIVE_DEST_1 parameter default value as /dbtop/grid/dbs/arch
Autotune of undo retention is turned on. 
LICENSE_MAX_USERS = 0
SYS auditing is disabled
NOTE: Volume support  enabled
NUMA system with 3 nodes detected
Starting up:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options.
ORACLE_HOME = /dbtop/grid
System name:    SunOS
Node name:  sec33-e
Release:    5.10
Version:    Generic_142909-17
Machine:    sun4u
Using parameter settings in server-side spfile /dbtop/asm/dbs/spfile+ASM.ora
System parameters with non-default values:
  large_pool_size          = 12M
  instance_type            = "asm"
  remote_login_passwordfile= "EXCLUSIVE"
  asm_diskstring           = "/dev/rdsk/*"
  asm_diskgroups           = "WFREC"
  asm_diskgroups           = "WFDATA"
  asm_power_limit          = 7
  diagnostic_dest          = "/dbtop/app/oracle"
Cluster communication is configured to use the following interface(s) for this instance
  169.254.121.29
cluster interconnect IPC version:Oracle UDP/IP (generic)
IPC Vendor 1 proto 2
Fri Jan 24 05:29:03 2014
PMON started with pid=2, OS id=17520 
Fri Jan 24 05:29:04 2014
PSP0 started with pid=3, OS id=17521 
Fri Jan 24 05:29:05 2014
VKTM started with pid=4, OS id=17522 at elevated priority
VKTM running at (10)millisec precision with DBRM quantum (100)ms
我已尝试使用以下正则表达式匹配组中的数据时间和位置:

(\w{1,3} \w{1,3} \d{1,2} \d{1,2}:\d{1,2}:\d{1,2} \d{4})
如果与时间戳匹配,如何在第二组中绘制日志消息的其余部分

/^([a-z]{1,3} [a-z]{1,3} \d{1,2} \d{1,2}:\d{1,2}:\d{1,2} \d{4})\r?\n(.*(?:\r?\n(?![a-z]{1,3} [a-z]{1,3} \d{1,2} \d{1,2}:\d{1,2}:\d{1,2} \d{4}).*)*)/igm

模式包括您的模式和与该模式或文本结尾匹配的附加部分

  • ^
    -行的开头
  • ([a-z]{1,3}[a-z]{1,3}\d{1,2}\d{1,2}:\d{1,2}:\d{1,2}\d{4})
    -组1匹配时间戳
  • \r?\n
    -换行符
  • (.**:\r?\n(?![a-z]{1,3}[a-z]{1,3}\d{1,2}\d{1,2}:\d{1,2}:\d{1,2}\d{4}.*)*)
    -第2组捕获0+个以下序列:
    • *
      -尽可能多的任何0+字符,直到换行字符
    • (?:\r?\n(?![a-z]{1,3}[a-z]{1,3}\d{1,2}\d{1,2}:\d{1,2}:\d{1,2}\d{4})。*
      -零次或多次出现:
      • \r?\n(?![a-z]{1,3}[a-z]{1,3}\d{1,2}\d{1,2}:\d{1,2}:\d{1,2}\d{4})
        -不跟在时间戳模式后面的换行符
      • *
        -尽可能多的0+字符,直到换行字符
JS演示:

var rx=/^([a-z]{1,3}[a-z]{1,3}\d{1,2}\d{1,2}:\d{1,2}\d{4})\r\n(.**:\r?\n(?![a-z]{1,3}\d{1,2}\d{1,2}\d{1,2}\d}\d}.*\r\n(.[\r?\n(?![a-z]{1,3}\a-z]{1,3}\d{1,2}\d{1,2}\d}.*\gmi;
var str=“Fri Jan 24 05:28:57 2014\r\n内存\u目标默认为1128267776。\r\n*实例\u编号从CSS=1获取,检查节点0是否存在…\r\n*节点0不存在。实例\u编号=1\r\n启动ORACLE实例(正常)\r\nLICENSE\u MAX\u SESSION=0\r\nLICENSE\u SESSIONS\u WARNING=0\r\n系统中的初始CPU数为48\r\n处理器内核数为24\r\n系统中的处理器套接字数为12\r\n从GPnP配置的专用接口“nxge20:1”用作专用互连。\r\nabc\r\n[name='nxge20:1',type=1,ip=169.254.121.29,mac=00-21-28-0e-8c-ae-00-00-00-00-00-00-00-00-00-00-00-00-2f-ff-ff,net=169.254.0.0/16,mask=255.0.0,use=haip:cluster\u interconnect/62]\r\n从GPnP配置的公共接口“nxge0”用作公共接口。\r\n[name='nxge0',type=1,ip=172.20.70.18,mac=00-21-28-0e-94-ce-00-00-00-00-00-00-00-00-00-2f-ff-ff,net=172.20.70.0/24,mask=255.255.0,use=public/1]\r\n从GPnP配置的公共接口“nxge21”用作公共接口。\r\n[name='nxge21',type=1,ip=100.100.100.1,mac=00-21-28-0e-8c-af-00-00-00-00-00-00-00-00-00-2f-ff-ff,net=100.100.0/23,mask=255.255.254.0,use=public/1]\r\n创建的实例监控共享内存段\r\n所有通信配置为使用0接口:\r\nCELL IP关联详细信息:\r\n NUMA状态:NUMA系统w/3进程组\r\n cellaffinity.ora状态:无法在“/etc/oracle/cell/network config/cellaffinity.ora”找到关联映射(有关详细信息,请参阅跟踪文件)\r\nCELL通信将使用1个IP组:\r\n Grp 0:\r\n禁用无闩锁SCN方案3\r\n使用LOG\u ARCHIVE\u DEST\u 1参数默认值/dbtop/grid/dbs/arch\r\n启用撤消保留的自动调谐。\r\n禁用了License\u MAX\u USERS=0\r\n系统审核\r\n注意:启用了卷支持\r\n检测到3个节点的UMA系统\r\n正在启动:\r\n nOracle Database 11g Enterprise Edition发行版11.2.0.4.0-64位生产\r\n带有真正的应用程序群集和自动存储管理选项。\r\nORACLE_HOME=/dbtop/grid\r\n系统名称:SunOS\r\n节点名称:sec33-e\r\n版本:5.10\r\n版本:通用\r\n机器:sun4u\r\n使用服务器端spfile/dbtop/asm/dbs/spfile+asm中的参数设置。ora\r\n具有非默认值的系统参数:\r\n large\u pool\u size=12M\r\n instance\u type=\“asm\”\r\n remote\u login\u passwordfile=\“EXCLUSIVE\”\r\n asm\u diskstring=\“/dev/rdsk/*\”\r\n asm\u diskgroups=\“WFREC\”\r\n asm\u diskgroups=\“WFDATA”\“\r\n asm\u power\u limit=7\r\n diagnostic\u dest=\”/dbtop/app/oracle\“\r\n群集通信配置为此实例使用以下接口\r\n 169.254.121.29\r\n群集互连IPC版本:oracle UDP/IP(通用)\r\nIPC供应商1 proto 2\r\nFri Jan 24 05:29:03 2014\r\nPRI Jan 24 05:29:04 2014\r\nPRI供应商1 proto 2\r\nFri Jan 24 05:29:03 2014\r\nPRI MON以pid=2开始,OS id=17520\r\nFri Jan 24 05:04 2014\r\nVP0以pid=3开始,OS id=17521\r\nFri Jan 24 05:29:05 2014\r\nVKTM以pid=4开始,OS id=17522以更高优先级\r\nVKTM以(10)毫秒的精度运行,DBRM quantum(100);
var m,res=[];
while((m=rx.exec(str))!==null){
res.push([m[1],m[2]]);
}

console.log(res);
请参阅。非常感谢它的工作:)