1. ホーム
  2. python

[解決済み] PythonとUnicodeを使った正規表現

2023-04-22 23:33:09

質問

文字列 'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ' からいくつかの Unicode 記号を削除する必要があります。

確かにここに存在することは知っています。試してみました。

re.sub('([\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+)', '', 'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ')

と表示されますが、うまくいきません。文字列は同じままです。何が間違っているのでしょうか?

どのように解決するのですか?

Python 2.xまたは3.0を使用していますか?

2.xを使用している場合、正規表現文字列を'u'でユニコード・エスケープした文字列にしてみてください。これは正規表現なので、正規表現文字列を'r'で生の文字列にするのは良い習慣です。また、パターン全体を括弧で囲むのは余計なことです。

re.sub(ur'[\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+', '', ...)

http://docs.python.org/tutorial/introduction.html#unicode-strings

編集する

unicodeの正規表現にはre.UNICODE/re.U/(?u)フラグを使うのも良い方法ですが、これは \w や \b などの文字クラスエイリアスにのみ影響し、このパターンでは一切使っていないので、影響を受けることはないでしょう。