import re
pattern = re.compile(r"\btwitter(?:\.com/|:?(?!\s*(?:https?://|twitter\b))\s+@?)([\w.-]+)", re.IGNORECASE)
def get_username(string):
m = pattern.search(string)
if m:
return m.group(1)
return None
print(get_username("Twitter: https://t...content-available-to-author-only...r.com/foo123"))
print(get_username("Twitter: twitter.com/foo123"))
print(get_username("https://t...content-available-to-author-only...r.com/foo123"))
print(get_username("https://t...content-available-to-author-only...r.com/foo123?blah"))
print(get_username("Twitter foo123"))
print(get_username("Twitter @foo123"))
print(get_username("Twitter: foo123"))
print(get_username("Twitter: foo123 | youtube: ..."))
aW1wb3J0IHJlCgpwYXR0ZXJuID0gcmUuY29tcGlsZShyIlxidHdpdHRlcig/OlwuY29tL3w6Pyg/IVxzKig/Omh0dHBzPzovL3x0d2l0dGVyXGIpKVxzK0A/KShbXHcuLV0rKSIsIHJlLklHTk9SRUNBU0UpCgpkZWYgZ2V0X3VzZXJuYW1lKHN0cmluZyk6CiAgICBtID0gcGF0dGVybi5zZWFyY2goc3RyaW5nKQogICAgaWYgbToKICAgICAgICByZXR1cm4gbS5ncm91cCgxKQogICAgcmV0dXJuIE5vbmUKCnByaW50KGdldF91c2VybmFtZSgiVHdpdHRlcjogaHR0cHM6Ly90Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5yLmNvbS9mb28xMjMiKSkKcHJpbnQoZ2V0X3VzZXJuYW1lKCJUd2l0dGVyOiB0d2l0dGVyLmNvbS9mb28xMjMiKSkKcHJpbnQoZ2V0X3VzZXJuYW1lKCJodHRwczovL3QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnIuY29tL2ZvbzEyMyIpKQpwcmludChnZXRfdXNlcm5hbWUoImh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uci5jb20vZm9vMTIzP2JsYWgiKSkKcHJpbnQoZ2V0X3VzZXJuYW1lKCJUd2l0dGVyIGZvbzEyMyIpKQpwcmludChnZXRfdXNlcm5hbWUoIlR3aXR0ZXIgQGZvbzEyMyIpKQpwcmludChnZXRfdXNlcm5hbWUoIlR3aXR0ZXI6IGZvbzEyMyIpKQpwcmludChnZXRfdXNlcm5hbWUoIlR3aXR0ZXI6IGZvbzEyMyB8IHlvdXR1YmU6IC4uLiIpKQ==