probar - Regex para obtener las palabras después de unir la cadena
expresiones regulares javascript pdf (6)
A continuación se muestra el contenido:
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
Necesito capturar las palabras después del Object Name:
del Object Name:
palabra en esa línea. Que es D:/ApacheTomcat/apache-tomcat-6.0.36/logs/localhost.2013-07-01.log
. Espero que alguien me pueda ayudar con esto.
^.*/bObject Name/b.*$
coincide - Nombre del objeto
Pero necesito que el resultado del partido sea ... no en un grupo de partidos ...
Por lo que está tratando de hacer, esto debería funcionar. /K
restablece el punto de partida de la partida.
/bObject Name:/s+/K/S+
Puede hacer lo mismo para obtener sus coincidencias de Security ID
.
/bSecurity ID:/s+/K/S+
Aquí hay un script de perl rápido para obtener lo que necesita. Necesita algunos espacios en blanco masticando.
#!/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";
}
}
Esta es la solución de Python.
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'']
>>>
Esto podría funcionar para usted dependiendo del idioma que esté usando
(?<=Object Name:).*
Es una afirmación positiva detrás de la afirmación. Más información se puede encontrar here
Sin embargo, no funcionará con el script java. En tu comentario, leí que lo estás usando para logstash. Si está utilizando el análisis GROK para logstash, entonces funcionará. Puedes verificarlo aquí
Lo siguiente debería funcionar para usted:
[/n/r].*Object Name:/s*([^/n/r]*)
Su partido deseado será en el grupo de captura 1.
[/n/r][ /t]*Object Name:[ /t]*([^/n/r]*)
Sería similar pero no permitiría cosas como "blah Nombre de objeto: blah" y también asegúrese de no capturar la siguiente línea si no hay contenido real después de "Nombre de objeto:"
Ya casi estás ahí. Utilice la siguiente expresión regular (con la opción multilínea habilitada)
/bObject Name:/s+(.*)$
El partido completo sería
Object Name: D:/ApacheTomcat/apache-tomcat-6.0.36/logs/localhost.2013-07-01.log
mientras que el grupo capturado uno contendría
D:/ApacheTomcat/apache-tomcat-6.0.36/logs/localhost.2013-07-01.log
Si desea capturar la ruta del archivo directamente use
(?m)(?<=/bObject Name:).*$