Tengo un archivo de texto que denota comentarios con un solo '
.
Algunas líneas tienen dos comillas, pero necesito obtener todo, desde la primera instancia de ay el salto de '
línea.
I AL01 ' A-LINE '091398 GDK 33394178
402922 0831850 ' '091398 GDK 33394179
I AL02 ' A-LINE '091398 GDK 33394180
400722 0833118 ' '091398 GDK 33394181
I A10A ' A-LINE 102 ' 53198 DJ 33394182
395335 0832203 ' ' 53198 DJ 33394183
I A10B ' A-LINE 102 ' 53198 DJ 3339418
La expresión regular apropiada sería el 'char seguido de cualquier número de caracteres [incluidos cero caracteres] que terminen con un token de final de cadena / línea:
Y si quisiera capturar todo después del 'char pero no incluirlo en la salida, usaría:
Esto básicamente dice que me den todos los caracteres que siguen al 'char hasta el final de la línea.
Editar : Se ha notado que $ está implícito cuando se usa. * Y por lo tanto no es estrictamente necesario, por lo tanto, el patrón:
es técnicamente correcto, sin embargo, es más claro ser específico y evitar confusiones para el mantenimiento posterior del código, de ahí mi uso de $. Creo que siempre es mejor declarar un comportamiento explícito que confiar en un comportamiento implícito en situaciones en las que se puede cuestionar la claridad.
fuente
Comenzando con una comilla simple (
'
), haga coincidir cualquier carácter (.
) cero o más veces (*
) hasta el final de la línea ($
).fuente
Cuando probé '. * En Windows (Notepad ++), coincidiría con todo después del primero' hasta el final de la última línea.
Para capturar todo hasta el final de esa línea escribí lo siguiente:
Esto solo capturaría todo desde 'hasta el final de esa línea.
fuente
En su ejemplo, optaría por el siguiente patrón:
use opciones multilínea y globales para hacer coincidir todas las ocurrencias.
Para incluir el salto de línea en el partido, puede utilizar:
Pero esto podría perder la última línea si no tiene salto de línea.
Para una sola línea, si no necesita hacer coincidir el salto de línea, preferiría usar:
fuente
Esto capturará todo hasta el 'in backreference 1 - y todo lo que esté después del' in backreference 2. Es posible que deba escapar de los apóstrofos, aunque dependiendo del idioma (\ ')
Modificación rápida: si la línea no tiene un '- backreference 1 aún debería atrapar toda la línea.
fuente
https://regex101.com/r/Jjc2xR/1
Estoy seguro de que este funciona, capturará la serie hexa en el texto mal estructurado de varias líneas debajo
Soy un eterno novato en expresiones regulares, pero intentaré explicar este
(\ w * (Hex): w *): busca texto en la línea donde la cadena contiene "Hex:"
(. *?) Este es el segundo texto capturado y significa todo después
(? = | $) crea un límite que es el espacio entre = y |
Entonces, con el segundo grupo, tendrá el valor
fuente