В этой записи поговорим про регулярные выражения, а точнее про то, как получить значение до совпадения какого-либо значения.
Предисловие
Давайте представим, что у вас есть текст из которого вам нужно что-то вытащить. Этот текст может постоянно меняться и вы точно не знаете что в нем будет, но вы понимаете примерную структуру и постройку предложений.
Живой пример
Для примера я буду использовать следующий текст:
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. В целом, синтаксис написания остается неизменным. От языка к языку у вас могут быть некоторые нюансы синтаксиса регулярного выражения, но это приходит с опытом, нужно лишь привыкнуть.