Regex para obtener las palabras después de hacer coincidir la cadena

Debajo está 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 nombre 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 pueda ayudarme con esto.

^.*\bObject Name\b.*$ coincidencias – Nombre del Objeto

Lo siguiente debería funcionar para usted:

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

Ejemplo de trabajo

La coincidencia deseada estará en el grupo de captura 1.


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

Sería similar pero no permitiría cosas como “blah Object Name: blah” y también asegúrese de no capturar la siguiente línea si no hay contenido real después de “Object Name:”

Pero necesito que el resultado del partido sea … no en un grupo de partidos …

Por lo que estás tratando de hacer, esto debería funcionar. \K restablece el punto de partida de la coincidencia.

 \bObject Name:\s+\K\S+ 

Puede hacer lo mismo para obtener sus coincidencias de Security ID .

 \bSecurity ID:\s+\K\S+ 

Ya casi estás ahí. Use la siguiente expresión regular (con la opción de varias líneas 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, use directamente

 (?m)(?<=\bObject Name:).*$ 

Esto podría funcionar para usted según el idioma que esté usando

 (?<=Object Name:).* 

Es una afirmación positiva detrás de la mirada. Más información se puede encontrar aquí

Sin embargo, no funcionará con el script java. En su comentario, leí que lo está usando para logstash. Si está utilizando el análisis GROK para logstash, entonces funcionaría. Puedes verificarlo aquí

https://grokdebug.herokuapp.com/

enter image description here

Aquí hay una secuencia de comandos rápida de Perl para obtener lo que necesita. Necesita un poco de mordiscos en el espacio en blanco.

 #!/bin/perl $sample = < 

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'] >>>