6 votos

Expresión Regular ignorando 9 apariciones de un carácter especial '|'

Necesidad de regular la expresión de analizar una línea de registro, tengo que seleccionar los datos después de 10 repeticiones de símbolo de canalización |

Ejemplo de registro de línea;

Info     device  Allow:FWD|TCP|data1|data2|data3|data4|data5|data6|data7|data8|data9|data10|data11|0|1|0|0|0|0||||||

Tengo que seleccionar data9 de registro y de línea.

A continuación es la expresión que estoy usando ahora mismo, esto es para un programa en Java

Expresssion:

\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|

la selección de grupo 11

En lugar de escapar caracteres uno por uno quisiera saltar/ignore 10 tubería de símbolos y seleccione data9

30voto

Toto Puntos 294

Es por eso que los cuantificadores son para.

^(?:[^|]*\|){10}([^|]*)

21voto

Matt Barnes Puntos 752

Si estás usando una expresión regular en el contexto de otro lenguaje de programación (Python, C#, etc.), que el lenguaje es probable que tenga algún tipo de cadena de la división de función. En mi experiencia, es generalmente más fácil dividir el delimitador y obtener una lista o matriz de valores en lugar de utilizar expresiones regulares para dividir.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: