Регулярное выражение на совпадение до определенного слова/паттерна

Регулярное выражение на совпадение до определенного слова/паттерна

· JavaScript и Регулярные выражения · 1 мин чтения

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

Предисловие

Давайте представим, что у вас есть текст из которого вам нужно что-то вытащить. Этот текст может постоянно меняться и вы точно не знаете что в нем будет, но вы понимаете примерную структуру и постройку предложений.

Живой пример

Для примера я буду использовать следующий текст:

dqwjdhqwhdqw dqwh dqwid hello, после не нужно искать

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

Для захвата всего будем использовать .*? и (=?hello), чтобы обозначить, что нас интересует все что угодно до совпадения слова hello.

В конечном итоге регулярное выражение выглядит следующим образом:

/(.*?)(=?hello)/gi

Круглые скобки () используются для группирования найденных результатов.

Пример на JavaScript

Я буду использовать JavaScript, чтобы показать вам реальный пример работы:

var re = /(.*?)(=?hello)/gi;
var string = "dqwjdhqwhdqw dqwh dqwid hello, после не нужно искат";
var res = re.exec(string);
console.log(res);
// Выводит:
// Array [ "dqwjdhqwhdqw dqwh dqwid hello", "dqwjdhqwhdqw dqwh dqwid ", "hello" ]

Посмотреть демо

Запускаем пример выше в консоли:

Результат регулярного выраженияКак это все работает?

В примере выше я использую функцию exec() на регулярном выражении и как аргумент функции, вы пишите текст для обработки.

В res находится массив со всеми совпадениями из регулярного выражения.

Немного о позициях в массиве:

  • На позиции 0 находится сама строка
  • На позиции 1 находится все что совпадает до слова hello (первая группа)
  • На позиции 2 находится слово hello (вторая группа)

Послесловие

В этом посте, я привел пример написания регулярного выражения для JavaScript. В целом, синтаксис написания остается неизменным. От языка к языку у вас могут быть некоторые нюансы синтаксиса регулярного выражения, но это приходит с опытом, нужно лишь привыкнуть.