2010-09-11 4 views
14

Можно ли совместить регулярное выражение только с первой строкой текста? Поэтому, если у меня есть текст:Regex соответствует только первой строке?

Это первая линия.
Это вторая строка. ...

Он будет соответствовать «Это первая строка», независимо от первой строки.

+0

Существует много типов регулярных выражений и технологий, использующих регулярное выражение; укажите соответствующие теги в своих тегах. – Jay

ответ

16

Это звучит скорее как задание для буфера дескриптора файла.

Вы должны быть в состоянии соответствовать первой линии с:

/^(.*)$/m 

(как всегда, это PCRE синтаксис)

модификатор /m делает ^ и $ матч встроенные символы новой строки. Поскольку нет модификатора /g, он просто обрабатывает первое вхождение, которое является первой строкой, а затем останавливается.

Если вы используете оболочку, использование:

head -n1 file 

или в качестве фильтра:

commandmakingoutput | head -n1 

Пожалуйста прояснить ваш вопрос, в случае, если это не Ват вы ищете ,

+0

Как сделать то же самое в синтаксисе Oniguruma? – Priyatham

+0

сделал трюк, спасибо! –

14

Да, вы можете.

Пример В JavaScript:

"This is the first line.\n This is the second line.".match(/^.*$/m)[0]; 

Возвращает

"This is the first line." 

РЕДАКТИРОВАТЬ

Объяснение регулярное выражение:

match(/^.*$/m)[0]

  • ^: начало строки
  • .*: (.) ​​Любой символ, 0 или более раз (*)
  • $: конец строки.
  • m: многострочный режим (. Действует как \ п тоже)
  • [0]: получить первую позицию массива результатов
+0

Я не верю, что это то, что он ищет ... – polemon

+0

@polemon: да, вы правы ... Я изменил свой ответ. – Topera

7

В случае, если Вы не нуждаетесь в самой первой линии независимо от того, что здесь вы идете:

\A.* 

Он выберет первую строчку, несмотря ни на что.

+0

Это самый простой, работает в Sublime Text 3, если кому-то это нужно. –

Смежные вопросы