Search code examples
regexexpressionregex-negationregex-lookarounds

Regex to get the words after matching string


Below is the content:

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

I need to capture the words after the Object Name: word in that line. Which is D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log.

How can I do this?

^.*\bObject Name\b.*$ matches - Object Name


Solution

  • If you are using a regex engine that doesn't support \K, the following should work for you:

    [\n\r].*Object Name:\s*([^\n\r]*)
    

    Working example

    Your desired match will be in capture group 1.


    [\n\r][ \t]*Object Name:[ \t]*([^\n\r]*)
    

    Would be similar but not allow for things such as " blah Object Name: blah" and also make sure that not to capture the next line if there is no actual content after "Object Name:"