Подтвердить что ты не робот

Использование переменных в регулярном выражении Python

Я разбираю файл и просматриваю строки для username-#, где имя пользователя изменится, и после тире может быть любое количество цифр [0-9].

Я пробовал почти каждую комбинацию, пытаясь использовать переменную username в регулярном выражении.

Я даже закрываю что-то вроде re.compile('%s-\d*'%user)?

4b9b3361

Ответ 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*')