Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如果数据中只存在匹配文本,则使用正则表达式提取字段_Regex - Fatal编程技术网

Regex 如果数据中只存在匹配文本,则使用正则表达式提取字段

Regex 如果数据中只存在匹配文本,则使用正则表达式提取字段,regex,Regex,我想从大型日志文件中提取特定字段的所有内容。我已经创建了一个正则表达式,它工作得很好 我唯一想改进的是,当特定文本(CMS初始标记)出现在该行时,它应该提取该字段 现在,我的正则表达式提取所提取行中存在的“CMS初始标记”中的必填字段 附言:我不是用这个特殊的语言。我将在SPLUNK中使用它,这是一个数据分析工具 工作正则表达式: ^[^,\n]*,\s+(?P<cms_initial_mark>[^ ]+) ^[^,\n]*,\s+(?P[^]+) 示例日志文件: *2017-

我想从大型日志文件中提取特定字段的所有内容。我已经创建了一个正则表达式,它工作得很好

我唯一想改进的是,当特定文本(CMS初始标记)出现在该行时,它应该提取该字段

现在,我的正则表达式提取所提取行中存在的“CMS初始标记”中的必填字段

附言:我不是用这个特殊的语言。我将在SPLUNK中使用它,这是一个数据分析工具

工作正则表达式:

^[^,\n]*,\s+(?P<cms_initial_mark>[^ ]+)
^[^,\n]*,\s+(?P[^]+)
示例日志文件:

*2017-06-20T12:17:49.238+0200:103.708[GC(CMS初始标记)[1 CMS初始标记:968087K(1346344K)]1066049K(2113128K),0.0128291 秒][时间:用户=0.08系统=0.01,实际=0.01秒]

0.954:[GC[1厘米初始标记:15929K(21888K)]17147K(31680K),0.0017910secs][Times:user=0.00 sys=0.00,real=0.00 secs]*

产量:0.0128291
0.0017910

如果组(1)有效,您能否将(+.+)添加到现有正则表达式并捕获所有组?为什么不
CMS初始标记[^,\n]*,\s+(?p[^]+)
?@horcrux:谢谢!这对我很有效:)