アンダースコアを除いて、UNICODE ですべての 2 文字のサムボールを見つける必要があります。現在のソリューションは次のとおりです。
pattern = re.compile(ur'(?:\s*)(\w{2})(?:\s*)', re.UNICODE | re.MULTILINE | re.DOTALL)
print pattern.findall('a b c ab cd vs sd a a_ _r')
['ab', 'cd', 'vs', 'sd', 'a_', '_r']
正規表現からアンダースコア _ を除外する必要があるため、a_ AND _rが見つかりません。問題は、私のキャラクターがどの言語でも使用できることです。したがって、[^a-zA-Z] のような正規表現は使用できません。たとえば、ロシア語では次のようになります。
print pattern.findall(u'ф_')