Expresión regular para unir caracteres al principio de la línea solamente

Estoy tratando de trabajar en expresiones regulares. Tengo un file de mainframe que tiene varios campos. Tengo un analizador de files planos que distingue varios types de loggings basados ​​en las primeras tres letras de cada línea. ¿Cómo escribo una expresión regular donde las primeras tres letras son 'CTR'?

Gracias por adelantado

¿Comienzo de línea o comienzo de cadena?

Inicio y final de la cadena

/^CTR.*$/ 

/ = delimitador
^ = inicio de cadena
CTR = literal CTR
$ = fin de la cadena
.* = cero o más de cualquier carácter excepto newline

Inicio y fin de línea

 /^CTR.*$/m 

/ = delimitador
^ = inicio de línea
CTR = literal CTR
$ = fin de línea
.* = cero o más de cualquier carácter excepto newline
m = habilita el modo multilínea, esto establece la expresión regular para tratar cada línea como una cadena, por lo que ^ y $ coincidirán con el inicio y el final de la línea

Mientras está en modo multilínea, puede hacer coincidir el inicio y el final de la cadena con los anclajes permanentes \A\Z

 /\ACTR.*\Z/m 

\A = significa inicio de cadena
CTR = literal CTR
.* = cero o más de cualquier carácter excepto newline
\Z = fin de cadena
m = habilita el modo multilínea

Como tal, otra forma de igualar el comienzo de la línea sería así:

 /(\A|\r|\n|\r\n)CTR.*/ 

o

 /(^|\r|\n|\r\n)CTR.*/ 

\r = retorno de carro / nueva línea nueva de Mac OS
\n = line-feed / Unix / Mac OS X nueva línea
\r\n = windows newline

Tenga en count que si va a utilizar la barra invertida \ en alguna cadena de progtwig que admita el escape, como las comillas dobles de php "" , primero debe escaping de ellas

para ejecutar \r\nCTR.* lo usaría como "\\r\\nCTR.*"

 ^CTR 

o

 ^CTR.* 

editar:

Para ser más claro … ^CTR coincidirá con el inicio de la línea y esos caracteres … si todo lo que quiere hacer es coincidir con una línea (y ya tiene la línea que usar) entonces eso es todo lo que realmente necesita (pero si este es el caso, es mejor que uses una function de tipo de substr() prefabricado … no sé qué idioma estás usando …). Pero si intenta hacer coincidir y tomar la línea, necesitará algo como .* O. .*$ O lo que sea, dependiendo de la function de idioma / expresión regular que esté usando …

Pruebe ^CTR.\* , Que literalmente significa inicio de línea, CTR, cualquier cosa .

Esto será sensible a mayúsculas y minúsculas , y la configuration de sensibilidad a mayúsculas y minúsculas dependerá de su lenguaje de progtwigción, o use ^[Cc][Tt][Rr].\* Si la insensibilidad a mayúsculas y minúsculas del entorno es importante.

 ^CTR.*$ 

coincide con una línea que comienza con CTR .

No estoy seguro de cómo aplicar eso a su file en su server, pero por lo general, la expresión regular para que coincida con el comienzo de una cadena sería:

 ^CTR 

El ^ significa comienzo de cadena / línea

  (? i) ^ [\ r \ n] * CTR

 (? i) - No distingue entre mayúsculas y minúsculas - Eliminar si distingue entre mayúsculas y minúsculas.
 [\ r \ n] - ignora el espacio y las nuevas líneas
 * - 0 o más veces lo mismo
 CTR - tu comienza con una string.

Hay ambigüedades en la pregunta.

¿Cuál es tu cadena de input? ¿Es el file completo? ¿O es 1 línea a la vez? Algunas de las respuestas están asumiendo lo último. Quiero responder a lo primero.

¿Qué le gustaría regresar de su expresión regular? ¿El hecho de que quiera un verdadero / falso sobre si se hizo una coincidencia? ¿O desea extraer la línea completa cuyo inicio comienza con CTR? Le responderé que solo quiere una coincidencia verdadero / falso.

Para hacer esto, solo necesitamos determinar si el CTR ocurre al principio de un file o inmediatamente después de una nueva línea.

 /(?:^|\n)CTR/ 
  • ¿Qué corresponde exactamente a una Regex creada con Regex.fromLiteral ()?
  • Regex Match en una string
  • Regex no coincide en Kotlin
  • Regex: coincide con palabras que no son cadenas