など...私は英語だけでなくフランス語、ロシア語、中国語、greec意味すべての言語では... JavaScriptでxregexpのように行うことができライブラリについて多分考える[^ \ W \ D_]
Python2ではPython3またはre.UNICODE
フラグを使用して、[^\W\d_]
を使用できます。 W \
:UNICODEが設定されている場合、これは[0-9_]以外のプラスUnicode文字 特性データベースで英数字ではないと分類 文字に一致します。
したがって[^\W\d_]
は、英数字ではなく、数字でもアンダースコアでもないものです。つまり、アルファベットの文字です。 :)
>>> import re
>>> re.findall("[^\W\d_]", "jüste Ä tösté 1234 ßÜ א д", re.UNICODE)
['j', 'ü', 's', 't', 'e', 'Ä', 't', 'ö', 's', 't', 'é', 'ß', 'Ü', 'א', 'д']
この複雑なロジックを回避するために
「W \」を探し、その後、最初の数字を削除し、あなたはまた、数字を削除し、最初のアンダースコア、その後、英数字のためになります:
>>> without_digit = re.sub("[\d_]", "", "jüste Ä tösté 1234 ßÜ א д", re.UNICODE)
>>> re.findall("\w", without_digit, re.UNICODE)
['j', 'ü', 's', 't', 'e', 'Ä', 't', 'ö', 's', 't', 'é', 'ß', 'Ü', 'א', 'д']
正規表現モジュール
\p{L}
またはを理解しているので、regex
モジュールは、助けることができると思われます10。
このregexの実装は、標準の 're'モジュールと下位互換性がありますが、追加の機能を提供します。 (アナコンダはPython 3.6でテスト済み)
>>> import regex as re
>>> re.findall("\p{L}", "jüste Ä tösté 1234 ßÜ א д", re.UNICODE)
['j', 'ü', 's', 't', 'e', 'Ä', 't', 'ö', 's', 't', 'é', 'ß', 'Ü', 'א', 'д']
私は全体Unicodeを含めると非アルファベット文字に私は全く同じ方法を考えていた –
@MoonCheesezを除外する方が簡単かもしれないと思います。シェルスクリプトでこれを行う簡単な方法がありますが、今はPythonの方法を考えることはできません。 –