Следующее будет соответствовать символу '@', за которым следует последовательность буквенно-цифровых символов:
@\w+
Следующее будет соответствовать символу «#», за которым следует последовательность буквенно-цифровых символов:
\#\w+
Существует множество выражений соответствия URL в произвольной форме, именно это я использую чаще всего:
https?://[-\w]+(\.\w[-\w]*)+(:\d+)?(/[^.!,?;""\'<>()\[\]\{\}\s\x7F-\xFF]*([.!,?]+[^.!,?;""\'<>\(\)\[\]\{\}\s\x7F-\xFF]+)*)?
Наконец, вы получите ложноположительные попадания со всеми из них, поэтому вам нужно будет очень внимательно посмотреть, как правильно разграничить эти теги ... Например, у вас есть следующий твит:
the url http://Roger@example.com/#bookmark is interesting.
Очевидно, что это будет проблемой, поскольку все три выражения будут совпадать внутри URL. Чтобы избежать этого, вам необходимо выяснить, каким персонажам разрешено предшествовать или следовать за матчем. Например, для следующего требуется пробел или начало строки, предшествующие ссылке @name, и знак ',' или пробел после нее.
(?<=[^\s])@\w+(?=[,\s])
Шаблоны регулярных выражений не легки, я рекомендую приобрести такой инструмент, как Expresso .