Цель; Совпадение всех вариантов телефонных номеров с 8 цифрами + (необязательно) код страны. Остановить совпадение, когда найдено «ключевое слово», даже если после «ключевого слова» существует больше совпадений. Нужно это в одну строчку и перепробовал множество вариаций с lookahead / behind и отрицанием [^ ключевое слово], но я не могу понять, как этого добиться.
Пример текста;
abra 90998855 kadabra 04 94 84 54 кошка 132 23 564 ой хорошая шляпа +41985 32 565 +17 98 56 32 56
Ladida
ключевое слово
Я хочу, чтобы это прекратило совпадение здесь или прямо перед «ключевым словом»
более приятный текст с некоторыми совпадениями cat 132 23 564 О, хорошая шляпа +41985 32 565 +17 98 5632 56
Пример регулярного выражения;
(\+\d{1,2})?[\s]?\(?\d{2,3}\)?[\s]?(\d{2})[\s]?(\d{2})?[\s]?(\d{2,3})
-> Это соответствует всем числам также под ключевым словом
(\+\d{1,2})?[\s]?\(?\d{2,3}\)?[\s]?(\d{2})[\s]?(\d{2})?[\s]?(\d{2,3})[^keyword]
-> Это соответствуетвсе числа также под ключевым словом
(\+\d{1,2})?[\s]?\(?\d{2,3}\)?[\s]?(\d{2})[\s]?(\d{2})?[\s]?(\d{2,3})(?!keyword)
-> Это соответствует всем числам также под ключевым словом
(\+\d{1,2})?[\s]?\(?\d{2,3}\)?[\s]?(\d{2})[\s]?(\d{2})?[\s]?(\d{2,3})(?=keyword)
-> Это ничего не соответствует
((\+\d{1,2})?[\s]?\(?\d{2,3}\)?[\s]?(\d{2})[\s]?(\d{2})?[\s]?(\d{2,3})(?:(?!keyword))*)
->Это соответствует всем числам также под ключевым словом