Как найти все вхождения искомого слова при помощи регулярного выражения?
Мое регулярное выражение и пример текста https://regex101.com/r/yL0jL5/1
Почему он находит только первое вхождение слова Людовик? Как сделать, чтобы и последующие тоже нашлись? Мне нужно найти всех Людовиков после решетки |
khusamov, во первых, нужно убрать жадность. Во вторых, "точка" - любой символ кроме переноса строки.
#[\s\S]*(Людовик) |
Подставил #[\s\S]*(Людовик)
https://regex101.com/r/eD7dE5/1 К сожалению он нашел только последнего Людовика после решетки. А нужно всех найти. Вот ссылка на полученный результат https://regex101.com/r/eD7dE5/1 |
Вот примерно что нужно получить:
#[\s\S]*?(Людовик)[\s\S]*?(Людовик)[\s\S]*?(Людовик)[\s\S]* Но нужно найти всех Людовиков после решетки Причем их количество заранее не известно |
/#((?:[\s\S]*?людовик[a-z]*)+)/gi |
Подставил /#((?:[\s\S]*?людовик[a-z]*)+)/gi
но он нашел один MATCH причем весь текст после решетки... Вот песочница: https://regex101.com/r/tL1oB6/2 |
Мне вот интересно, вы когда регулярные выражения изучаете, хотя бы приблизительно имеете представление:
1. какие задачи ими решаются 1.1. как именно решаются 2. какие задачи ими не решаются ? Иными словами для чего они применяются, а для чего НЕ применяются? 'use strict' let text = ` ЛюдовикXV, ЛюдовикXVI, ЛюдовикXVIII, ЛюдовикLXVII, ЛюдовикXXL ЛюдовикXV, ЛюдовикXVI, ЛюдовикXVIII, ЛюдовикLXVII, ЛюдовикXXL # ЛюдовикXV, ЛюдовикXVI, ЛюдовикXVIII, ЛюдовикLXVII, ЛюдовикXXL ЛюдовикXV, ЛюдовикXVI, ЛюдовикXVIII, ЛюдовикLXVII, ЛюдовикXXL`; let array = text .split('\n') .filter(x => /^#/.test(x)) .map(x => x.match(/Людовик[XLVI]+/g)); alert(JSON.stringify(array)); |
Цитата:
|
Программным способ так делять нельзя. У меня библиотека, которая требует на входе регулярное выражение. Библиотеку я переписать не могу. Она требует, чтобы я ОДНИМ регулярным выражением нашел всех Людовиков после решетки.
В общем похоже эту задачу регулярным выражением не решить... |
Часовой пояс GMT +3, время: 01:21. |