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

Estoy tratando de trabajar en expresiones regulares. Tengo un archivo de mainframe que tiene varios campos. Tengo un analizador de archivos planos que distingue varios tipos de registros basados ​​en las primeras tres letras de cada línea. ¿Cómo escribo una expresión regular donde las primeras tres letras son ‘CTR’?

¿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 cuenta 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 escapar 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 función 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 función 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 configuración 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 es importante.

 ^CTR.*$ 

coincide con una línea que comienza con CTR .

No estoy seguro de cómo aplicar eso a su archivo en su servidor, 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

Símbolo Regex para que coincida al comienzo de una línea:

 ^ 

Agregue la cadena que está buscando ( CTR ) a la expresión regular de esta manera:

 ^CTR 

Ejemplo: regex

¡Eso debería ser suficiente!

Sin embargo, si necesita obtener el texto de toda la línea en el idioma de su elección, agregue un patrón “hacer coincidir cualquier cosa” .* :

 ^CTR.* 

Ejemplo: más regex

Si quieres volverte loco, utiliza el matcher de final de línea

 $ 

Añádalo al creciente patrón de expresiones regulares:

 ^CTR.*$ 

Ejemplo: volvemos loco

Nota: Dependiendo de cómo y dónde use la expresión regular, es posible que tenga que usar un modificador de varias líneas para que coincida con varias líneas. Podría haber una discusión completa sobre la mejor estrategia para seleccionar líneas de un archivo para procesarlas, y algunas de las estrategias requerirían esto:

Indicador multilínea m (esto se especifica de varias maneras en varios idiomas / contextos)

 /^CTR.*/gm 

Ejemplo: tuvimos que usar m en regex101

  (? 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 cuerda.

Hay ambigüedades en la pregunta.

¿Cuál es tu cadena de entrada? ¿Es el archivo 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 comienzo de un archivo o inmediatamente después de una nueva línea.

 /(?:^|\n)CTR/