Вытащить определенные слова из строк которые начинаются одинаково
Допустим есть текст:
abc cab abc
123: abc cab abc cab
abc cab abc
123: abc cab abc cab
Нужно вытащить все abc и cab из строк которые начинаются с 123:
Если (\babc\b)|(\bcab\b) то тащит со всех строк. Если что-то типа такого (^123.*(?|(\babc\b)|(\bcab\b)).*) то вытаскивает из нужных строк только последнее совпадение. Пробовал такое ^123:(?=.*\b(cab|bac)\b) но тоже только последнее
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Используйте
(?:\G(?!^)|^123:).*?\b\K(?:cab|bac)\b
См. пример работы регулярного выражения.
Подробности
(?:\G(?!^)|^123:)-123:в начале строки или конец предыдущего совпадения.*?- ноль и более символов, отличных от символов переноса строки, как можно меньше\b- граница слова\K- оператор, удаляющий текст из буфера текущего совпадения(?:cab|bac)- словаили\b- граница слова.