Проблема с регулярным выражением разных строк
Честно говоря, не додумал как правильно назвать заголовок, но объясню всё подробно тут.
Есть две переменные:
pkill = '.*? (\w+):(\w+)'
revent = '.*? (\w+):(\w+):(\w+)'
Обе переменные берут данные, ища строки через re.search в файле log.txt.
Пример строки:
player:attacker
player:item:count
[16:04:SS]: Player:Ruby:10 # revent - игрок получил 10 рубинов;
[16:04:SS]: Player1:Player0 # pkill - игрок0 убил игрока1;
Также у меня есть бот Discord, который постоянно проверяет файл на наличие этих строк.
Когда я для теста вписываю эти строки и сохраняю файл я ожидаю следующее:

Появляется лишняя строка: :crossed_swords: Игрок Ruby убил игрока Player
Ответы (1 шт):
У вас регулярное выражение pkill находит тот же текст (его начальную часть), что и выражение revent.
Измените регулярное выражение в pkill на
pkill = r'.*? (\w+):(\w+)\b(?!:)'
См. пример его работы.
\b(?!:) проверяет наличие границы слова и отсутствие двоеточия сразу после слова после первого двоеточия. Также обратите внимание на префикс r'...', если его не использовать, придётся удвоить символ обратной косой черты, pkill = '.*? (\\w+):(\\w+)\\b(?!:)' (pkill = '.*? (\w+):(\w+)\\b(?!:)' тоже сработает).
