Я не осознавал, насколько сложен текст в твиттере!
http://engineering.twitter.com/2010/02/introducing-open-source-twitter-text.html
Я нашел эти строки, связанные с хэштегом, в библиотеке Ruby, на которую есть ссылка в этом посте. Не знаю много Руби - может быть больше ...
# Latin accented characters (subtracted 0xD7 from the range, it's a confusable multiplication sign. Looks like "x")
LATIN_ACCENTS = [(0xc0..0xd6).to_a, (0xd8..0xf6).to_a, (0xf8..0xff).to_a].flatten.pack('U*').freeze
REGEXEN[:latin_accents] = /[#{LATIN_ACCENTS}]+/o
# Characters considered valid in a hashtag but not at the beginning, where only a-z and 0-9 are valid.
HASHTAG_CHARACTERS = /[a-z0-9_#{LATIN_ACCENTS}]/io
REGEXEN[:auto_link_hashtags] = /(^|[^0-9A-Z&\/]+)(#|#)([0-9A-Z_]*[A-Z_]+#{HASHTAG_CHARACTERS}*)/io
Я не вижу причины для обработки `LATIN_ACCENTS 'отдельно. Если настроено правильно, ярлык \ w должен перехватывать все эти акцентированные символы. Может быть, в Ruby все по-другому ... Может быть, у них были другие причины ...
Пока что я согласен на что-то похожее на это
$tweet =~ s{#([0-9A-Z_]*[A-Z_]+\w+)}{<a href="http://twitter.com/search?q=%23$1">#$1</a>}gi
Не могу сказать, что это еще решено ...