0
次のコードスニペットがfalseを返す理由はわかりません。特殊文字はエスケープする必要があることを理解していますが、re.escape()は既にそうしています。正規表現はPythonの特殊文字と一致しません
import re
string = re.escape('$')
pattern = re.compile(string)
print(bool(pattern.match(string)))
次のコードスニペットがfalseを返す理由はわかりません。特殊文字はエスケープする必要があることを理解していますが、re.escape()は既にそうしています。正規表現はPythonの特殊文字と一致しません
import re
string = re.escape('$')
pattern = re.compile(string)
print(bool(pattern.match(string)))
間違ったエスケープです。検索する文字列を変更する必要はありません。しかし、あなたが文字通り一致させるパターンに含める文字列はそうです。ここ
import re
string = '$'
pattern = re.compile(re.escape(string))
print(bool(pattern.match(string)))
、パターン\$
($
リテラル一致)文字列"$"
と照合し、成功しています。あなたの例では
、パターン\$
($
リテラル試合は)文字列"\$"
(Pythonでr"\$"
または"\\$"
)と照合し、match
は文字列全体をカバーするパターンを必要とするため失敗し、バックスラッシュは比類のないままにされています。
文字列の先頭から一致すると見なされます。あなたの文字列は '\ $'、 '\'は '$'ではありません。 –
@SebastianProske私は笑を理解していません。私はパターンと文字列を一致させるために同じ文字列を使用しました。 – latenightcode
正規表現 '\ $'は文字列 '$'にマッチしますが、あなたの文字列は '$'で始まっていません。 –