2
意図したように、次のような単純なスクリプトを実行する必要がありますが、Unicodeのエモート文字列に窒息して表示されます。Pythonの3正規表現とUnicodeエモート
import re
phrase = "(╯°□°)╯ ︵ ┻━┻"
pattern = r'\b{0}\b'.format(phrase)
text = "The quick brown fox got tired of jumping over dogs and flipped a table: (╯°□°)╯ ︵ ┻━┻"
if re.search(pattern, text, re.IGNORECASE) != None:
print("Matched!")
私は言葉「キツネ」を置き換えた場合フレーズ変数の内容は、パターンが実際に一致します。私はなぜこの特定の文字列が好きではないのか困惑しています。マニュアルとStack Overflowへの私の探検はこの問題を明らかにしていません。私が知る限りでは、Python 3はこれを問題なく処理する必要があります。
私は痛いほど明白な何かを見逃していますか?
編集:また、境界(\ b)を削除しても、文字列を一致させる機能には影響しません。
を。あなたが問題を十分に見つめているときに、それが目に見えないことがあるのは驚くべきことです。しかし、問題を引き起こすと思われる私の特定のケースでは、言葉の境界が必要です。 (目的は、設定ファイルのフレーズを一致させながらScunthorpeの問題を避けることです。そうでなければ "string in string"を使用しています) –
正確な要件で新しい質問を開くことができますか? 「私は*単語境界が必要です」とはどういう意味ですか? –
同じ問題です。 "フレーズ"がハードコーディングされていないと仮定すると、\ bを取り除くことでスカンソープ問題が発生します。 –