正则表达式匹配字符串后获取单词

Cha*_*ala 58 regex expression regex-negation regex-lookarounds

以下是内容:

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
Run Code Online (Sandbox Code Playgroud)

我需要捕捉该行中单词之后的Object Name:单词.这是D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log.我希望有人可以帮助我.

^.*\bObject Name\b.*$ 匹配 - 对象名称

hwn*_*wnd 43

但是我需要匹配结果......不在匹配组中......

对于你想要做的事情,这应该有效.\K重置比赛的起点.

\bObject Name:\s+\K\S+
Run Code Online (Sandbox Code Playgroud)

您也可以这样做以获得Security ID比赛.

\bSecurity ID:\s+\K\S+
Run Code Online (Sandbox Code Playgroud)

  • 哦太好了.`\ K` +1队友.这是"答案". (10认同)
  • `\ K`不能在javascript,任何其他解决方案? (3认同)

Dal*_*las 41

以下内容对您有用:

[\n\r].*Object Name:\s*([^\n\r]*)
Run Code Online (Sandbox Code Playgroud)

工作实例

您想要的匹配将在捕获组1中.


[\n\r][ \t]*Object Name:[ \t]*([^\n\r]*)
Run Code Online (Sandbox Code Playgroud)

类似但不允许诸如"blah Object Name:blah"之类的东西,并且如果在"Object Name:"之后没有实际内容,也要确保不捕获下一行

  • 但我需要匹配结果为"D:\ ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log"不在匹配组中 (3认同)
  • @CasperNine,这取决于是否支持lookbehinds。试试这个,让我知道你的结果:`(?<=对象名称:)([[^ \ n \ r] *)`参见[here](http://rubular.com/r/jKUqWN2Tb1) (2认同)
  • @CasperNine,您可以尝试与换行符匹配,而不要与任何空格字符匹配...`[^ \ r \ n] +(?= \ s + Handle ID:)` (2认同)

Rav*_*yal 9

你快到了.使用以下正则表达式(启用多行选项)

\bObject Name:\s+(.*)$
Run Code Online (Sandbox Code Playgroud)

完全匹配将是

Object Name:   D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
Run Code Online (Sandbox Code Playgroud)

而被捕获的组将包含

D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
Run Code Online (Sandbox Code Playgroud)

如果要直接捕获文件路径使用

(?m)(?<=\bObject Name:).*$
Run Code Online (Sandbox Code Playgroud)


Him*_*han 8

这可能适合您,具体取决于您使用的语言:

(?<=Object Name:).*
Run Code Online (Sandbox Code Playgroud)

这是一个积极的回顾断言。可以在此处找到更多信息。

但是它不适用于 JavaScript。在您的评论中,我读到您将它用于 logstash。如果您对 logstash 使用 GROK 解析,那么它会起作用。您可以在此处自行验证:

https://grokdebug.herokuapp.com/

在此处输入图片说明