Подтвердить что ты не робот

Регулярное выражение для соответствия символам только в начале строки

Я пытаюсь работать с регулярными выражениями. У меня есть файл мэйнфрейма, который имеет несколько полей. У меня есть плоский анализатор файлов, который отличает несколько типов записей на основе первых трех букв каждой строки. Как написать регулярное выражение, где первые три буквы являются "CTR".

Заранее спасибо

4b9b3361

Ответ 1

Начало строки или начало строки?

Начало и конец строки

/^CTR.*$/

/= разделитель
^= начало строки
CTR= литерал CTR $= конец строки
.*= ноль или более любого символа, кроме новой строки

Начало и конец строки

/^CTR.*$/m

/= разделитель
^= начало строки
CTR= литерал CTR $= конец строки
.*= ноль или более любого символа, кроме символа новой строки
m= включает многострочный режим, это задает регулярное выражение для обработки каждой строки как строки, поэтому ^ и $ будут соответствовать началу и концу строки

В многострочном режиме вы все равно можете совместить начало и конец строки с \A\Z постоянными якорями

/\ACTR.*\Z/m

\A= означает начало строки
CTR= литерал CTR .*= ноль или более любого символа, кроме символа новой строки
\Z= конец строки
m= включает многострочный режим

Таким образом, другой способ совпадения с началом строки будет таким:

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

или

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

\r= возврат каретки/старая версия новой ОС Mac OS | \n= line-feed/Unix/Mac OS X newline
\r\n= окна newline

Обратите внимание, что если вы собираетесь использовать обратную косую черту \ в некоторой строке программы, которая поддерживает экранирование, например, двойные кавычки php "", вам нужно сначала их избежать

поэтому для запуска \r\nCTR.* вы использовали бы его как "\\r\\nCTR.*"

Ответ 2

^CTR

или

^CTR.*

изменить:

Чтобы быть более ясным... ^CTR будет соответствовать началу строки и тем символам... если все, что вы хотите сделать, это совпадение для самой строки (и уже есть строка для использования), тогда все, что вы действительно (но если это так, вам может быть лучше использовать функцию типа prefab substr()... dunno, какой язык вы используете...). Но если вы пытаетесь сопоставить и захватить строку, вам понадобится что-то вроде .* или .*$ или что-то еще, в зависимости от того, какую функцию языка/регулярного выражения вы используете...

Ответ 3

Попробуйте ^CTR.\*, который буквально означает начало строки, CTR, что-то.

Это будет чувствительный к регистру, а настройка нечувствительности к регистру будет зависеть от вашего языка программирования или используйте ^[Cc][Tt][Rr].\*, если проблема с регистрацией по нескольким средам.

Ответ 4

^CTR.*$

соответствует строке, начинающейся с CTR.

Ответ 5

Не знаете, как применить это к файлу на вашем сервере, но обычно регулярное выражение, соответствующее началу строки, будет выглядеть следующим образом:

^CTR


^ означает начало строки/строки

Ответ 6

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

(?i) -- case insensitive -- Remove if case sensitive.
[ \r\n]  -- ignore space and new lines
* -- 0 or more times the same
CTR - your starts with string.

Ответ 7

В вопросе есть двусмысленности.

Какова ваша строка ввода? Это весь файл? Или это одна строка за раз? Некоторые из ответов предполагают последнее. Я хочу ответить на первое.

Что бы вы хотели вернуть из своего регулярного выражения? Тот факт, что вы хотите, чтобы истина/ложь о том, была ли проведена совпадение? Или вы хотите извлечь всю строку, начало которой начинается с CTR? Я отвечу, что вам нужно только истинное/ложное совпадение.

Для этого нам просто нужно определить, происходит ли CTR в начале файла или сразу после новой строки.

/(?:^|\n)CTR/