5

アンダースコアを除いて、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'ф_')
4

3 に答える 3

12

単語以外の文字を除外する AND _

[^\W_]

それ以外の

\w
于 2012-09-25T19:35:19.430 に答える
9

代わりに新しいregexモジュールを使用することをお勧めします。その機能の 1 つは、文字セットから文字を削除できることです。

import regex as re

pattern = re.compile(ur'(?:\s*)([\w--_]{2})(?:\s*)', re.UNICODE | re.MULTILINE | re.DOTALL)

この構文は、一致する文字からアンダースコア文字を削除した[\w--_]場合と同じ文字セットを作成します。\w

于 2012-09-25T19:33:05.367 に答える