У меня есть эта строка:
"Za @Foo_Bar: @BAR_foo @FooBAR @BArfoo"
И шаблон регулярного выражения, подобный этому:
((Za\s)?@[A-Za-z0-9_]*)|(@[A-Za-z0-9_]*)
или
(Za\s)?@[A-Za-z0-9_]*
Я хочу вернуть этот список:
['Za @Foo_Bar','BAR_foo','FooBAR','BArfoo']
Но я получаю неожиданные результаты:
>>> import re
>>> import regex
>>> a = "Za @Foo_Bar: @BAR_foo @FooBAR @BArfoo"
>>> regex.fullmatch(u'((Za\s)?@[A-Za-z0-9_]*)|(@[A-Za-z0-9_]*)',a) is None
True
>>> re.findall(u'((Za\s)?@[A-Za-z0-9_]*)|(@[A-Za-z0-9_]*)',a)
[('Za @Foo_Bar', 'Za ', ''), ('@BAR_foo', '', ''), ('@FooBAR', '', ''), ('@BArfoo', '', '')]
Второй результат более убедителен, но содержит много ненужных значений:
>>> regex.findall(u'((Za\s)?@[A-Za-z0-9_]*)|(@[A-Za-z0-9_]*)',a)
[('Za @Foo_Bar', 'Za ', ''), ('@BAR_foo', '', ''), ('@FooBAR', '', ''), ('@BArfoo', '', '')]
>>> match = re.search(u'((Za\s)?@[A-Za-z0-9_]*)|(@[A-Za-z0-9_]*)',a)
>>> match.groups()
('Za @Foo_Bar', 'Za ', None)
Почему fullmatch
возвращает None
? Как я могу получить чистый список?