Использование переменных в регулярном выражении Python
Я разбираю файл и просматриваю строки для username-#
, где имя пользователя изменится, и после тире может быть любое количество цифр [0-9]
.
Я пробовал почти каждую комбинацию, пытаясь использовать переменную username
в регулярном выражении.
Я даже закрываю что-то вроде re.compile('%s-\d*'%user)
?
Ответы
Ответ 1
Работа по мере необходимости:
>>> user = 'heinz'
>>> import re
>>> regex = re.compile('%s-\d*'%user)
>>> regex.match('heinz-1')
<_sre.SRE_Match object at 0x2b27a18e3f38>
>>> regex.match('heinz-11')
<_sre.SRE_Match object at 0x2b27a2f7c030>
>>> regex.match('heinz-12345')
<_sre.SRE_Match object at 0x2b27a18e3f38>
>>> regex.match('foo-12345')
Ответ 2
Да, объедините регулярное выражение самостоятельно или используйте форматирование строк. Но не забудьте использовать re.escape(), если ваша переменная может содержать символы, которые имеют особое значение в регулярных выражениях.
Ответ 3
Вы можете создать строку, используя метод .format() строки:
re.compile('{}-\d*'.format(user))
Ответ 4
Как насчет:
re.compile(user + '-\d*')