Regex, чтобы соответствовать только первой строке? - PullRequest
16 голосов
/ 11 сентября 2010

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

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

Это будет соответствовать "Это первая строка.", Какой бы ни была первая строка.

Ответы [ 4 ]

25 голосов
/ 11 сентября 2010

это больше похоже на работу для буфера файлового дескриптора.

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

/^(.*)$/m

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

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

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

head -n1 file

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

commandmakingoutput | head -n1

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

15 голосов
/ 08 января 2016

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

 \A.*

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

15 голосов
/ 11 сентября 2010

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

Пример в javascript:

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

Возвращает

"This is the first line."

EDIT

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

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

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

Есть также негативная функция lookbehind (PowerGREP или Perl).Это отлично работает для моих целей.Регулярное выражение:

(?<!\s+)^(.+)$

, где

  • (?<!\s+) является отрицательным lookbehind - регулярное выражение соответствует только строкам, которым не предшествует пробел (ы) (\s также обозначает разрыв строки)
  • ^ - начало строки
  • (.+) - строка
  • $ - конец строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...