1. Справочная информация
У меня есть строка, которая содержит действительные и недопустимые имена пользователей Twitter как таковые:
@moondra2017.org,@moondra,Python@moondra,@moondra_python
В приведенной выше строке @ moondra и @ moondra_ python являются допустимыми именами пользователей. Остальные - нет.
1.1 Цель
Используя \ b и / или \ B как часть шаблона регулярного выражения, мне нужно извлечь действительные имена пользователей.
PS Я должен использовать \ b и / или \ B как часть регулярного выражения, что является частью этой цели.
2. Моя неудачная попытка
import re
# (in)valid twitter user names
un1 = '@moondra2017.org' # invalid
un2 = '@moondra' # << valid, we want this
un3 = 'Python@moondra' # invalid
un4 = '@moondra_python' # << validwe want this
string23 = f'{un1},{un2},{un3},{un4}'
pattern = re.compile(r'(?:\B@\w+\b(?:[,])|\B@\w+\b)') # ??
print('10:', re.findall(pattern, string23)) # line 10
2.1 Наблюдается : Приведенный выше код выводит:
10: ['@ moondra2017', '@moondra, ',' @ moondra_ python '] # неверно
2.2 Ожидается:
10: [' @moondra ',' @moondra_ python '] # правильно