正则expression式来匹配string后的单词
以下是内容:
Subject: Security ID: S-1-5-21-3368353891-1012177287-890106238-22451 Account Name: ChamaraKer Account Domain: JIC Logon ID: 0x1fffb Object: Object Server: Security Object Type: File Object Name: D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log Handle ID: 0x11dc  我需要捕获该行中的Object Name:单词之后的单词。 这是D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log 。 我希望有人能帮助我。 
  ^.*\bObject Name\b.*$匹配 – 对象名称 
以下内容适用于您:
 [\n\r].*Object Name:\s*([^\n\r]*) 
工作示例
你想要的匹配将在捕获组1中。
 [\n\r][ \t]*Object Name:[ \t]*([^\n\r]*) 
类似但不允许诸如“blah Object Name:blah”之类的东西,并且确保在“Object Name:”之后没有实际的内容时不捕获下一行
但我需要的比赛结果是…不在比赛组…
 对于你想要做的,这应该工作。  \K重置比赛的起点。 
 \bObject Name:\s+\K\S+ 
 你可以做同样的事情来获得你的Security ID匹配。 
 \bSecurity ID:\s+\K\S+ 
你快到了。 使用以下正则expression式(启用多行选项)
 \bObject Name:\s+(.*)$ 
完整的比赛将是
 Object Name: D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log 
而被俘的组则包含在内
 D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log 
如果要直接捕捉文件path使用
 (?m)(?<=\bObject Name:).*$ 
这里有一个快速的perl脚本来获得你所需要的。 需要一些空白的chomping。
 #!/bin/perl $sample = <<END; Subject: Security ID: S-1-5-21-3368353891-1012177287-890106238-22451 Account Name: ChamaraKer Account Domain: JIC Logon ID: 0x1fffb Object: Object Server: Security Object Type: File Object Name: D:\\ApacheTomcat\\apache-tomcat-6.0.36\\logs\\localhost.2013- 07-01.log Handle ID: 0x11dc END my @sample_lines = split /\n/, $sample; my $path; foreach my $line (@sample_lines) { ($path) = $line =~ m/Object Name:([^s]+)/g; if($path) { print $path . "\n"; } } 
这可能会取决于您使用的是哪种语言
 (?<=Object Name:).* 
这是一个积极的向后看断言。 更多信息可以在这里find
它不会与Java脚本工作。 在你的评论中,我读到你正在使用logstash。 如果您正在使用GROK分析logstash,那么它将工作。 你可以在这里validation自己
https://grokdebug.herokuapp.com/
  
 
这是python解决scheme。
 import re line ="""Subject: Security ID: S-1-5-21-3368353891-1012177287-890106238-22451 Account Name: ChamaraKer Account Domain: JIC Logon ID: 0x1fffb Object: Object Server: Security Object Type: File Object Name: D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log Handle ID: 0x11dc""" regex = (r'Object Name:\s+(.*)') match1= re.findall(regex,line) print (match1) *** Remote Interpreter Reinitialized *** >>> ['D:\\ApacheTomcat\x07pache-tomcat-6.0.36\\logs\\localhost.2013-07-01.log'] >>>