r'[/$]word1[/$]|[/$]word2[/$]'
он вылавливает все слова /word1/ или /word2/, например если применить метод findall(pattern, '/word1/ aa /word2/) он выдаст [/word1/, /word2/].
Но проблема в том, что если применить метод findall(pattern, /word1/word2/), то он найдет только word1, так как перед word2 он не видит /, потому что этот / идет в /word1/. Как сделать так чтобы в строке /word1/word2/ находились два этих слова?
Regex online, первая ссылка Гугла, там наглядно можно проанализировать как что работает
https://regex101.com/r/O5PpHi/1
чёт сложно сделать именно так, матчить /word1/word2/ но не матчить /word1/word1/ https://regex101.com/r/O5PpHi/2
матчить /word1/word1/ можно
спасибо, работает вроде
а что если нужно не на двух, а на другом количестве слов это проделать? просто добавить |word3 не работает
в двух местах надо добавлять, можно еще вот так`([/$])(word1|word2)\1((word1|word2)\1){0,5}` - где матчитсяпервое слово, а {0,5} - это может быть матчится еще от 0 до 5 слов (итого 1-6 слов разделенных одним разделителем)
а если вместо ? добавить + то норм?
а как мне быть с пробелом? https://regex101.com/r/2SyB4Z/1 не работает в том случае, когда слово стоит в начале строки или в конце
у меня в коде было (?:^|[/$]|$) и тогда работало
мне пока сложно, по сути пробельный разделитель надо обрабатывать отдельно. можешь спросить у любителей регулярок https://t.me/regex_ru
спасибо
( ?|[/$\s])(word1|word2)\1((word1|word2)\1){0,}
Обсуждают сегодня