Regex, aby uzyskać słowa po dopasowaniu łańcucha

Poniżej treść:

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

Muszę uchwycić słowa po Object Name: w tej linijce. Czyli D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log.

Jak mogę to zrobić?

^.*\bObject Name\b.*$ matches-nazwa obiektu

Author: Peter Mortensen, 2013-10-05

6 answers

Następujące powinny działać dla Ciebie:

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

Przykład roboczy

Twój pożądany mecz będzie w grupie przechwytywania 1.


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

Byłoby podobne, ale nie pozwalałoby na rzeczy takie jak "blah nazwa obiektu: blah", a także upewnij się, że nie przechwytywanie następnej linii, jeśli nie ma rzeczywistej zawartości po "nazwa obiektu:"

 52
Author: Dallas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-05 02:18:26

Ale potrzebuję wyniku meczu ... Nie w grupie meczowej...

To, co próbujesz zrobić, powinno zadziałać. \K resetuje punkt początkowy meczu.
\bObject Name:\s+\K\S+

Możesz zrobić to samo, aby zdobyć swoje Security ID mecze.

\bSecurity ID:\s+\K\S+
 52
Author: hwnd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-10 17:40:20

Już prawie jesteś. Użyj następującego wyrażenia regularnego (z włączoną opcją wielowierszową)

\bObject Name:\s+(.*)$

Kompletny mecz będzie

Object Name:   D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log

Podczas gdy zdobyta grupa będzie zawierać

D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log

Jeśli chcesz przechwycić ścieżkę pliku bezpośrednio użyj

(?m)(?<=\bObject Name:).*$
 13
Author: Ravi K Thapliyal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-05 02:34:10

To może Ci się udać w zależności od tego, jakiego języka używasz:

(?<=Object Name:).*

To pozytywne twierdzenie lookbehinda. Więcej informacji można znaleźć tutaj .

To nie będzie działać z JavaScript choć. W Twoim komentarzu przeczytałem, że używasz go do logstash. Jeśli używasz parsowania GROK dla logstash, to zadziała. Możesz to sam zweryfikować tutaj:

Https://grokdebug.herokuapp.com/

Tutaj wpisz opis obrazka

 7
Author: Himanshu Chauhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-11 18:04:15

Jest To rozwiązanie Pythona.

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']
>>> 
 -3
Author: user1586957,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-11 18:05:38

Oto szybki skrypt Perla, aby uzyskać to, czego potrzebujesz. Potrzebuje trochę spacji.

#!/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";
  }
}
 -3
Author: Ryan Norris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-11 18:07:14