私は、PythonのRegexでグループの後方参照を使ってそれらを理解しようとしていますが、私はあまり運がありません。PythonのRegexの逆参照に関する問題
import re
leftQuotes = re.compile("((\"|\“)([\w|\d]))")
rightQuotes = re.compile("(([\w|\d])(\"|\”))")
s = "This is “problematic”"
s = re.sub(leftQuotes, r'‘\3', s)
s = re.sub(rightQuotes, r'’\3', s)
print(s)
出力:この場合には(一致する文字を維持しながら、最初re.sub()
では、私は成功し、単一の左引用符と左の二重引用符を置き換えるために管理
This is ‘problemati’”
、 "p")。しかし、グループの後方参照(1、2、3)にかかわらず、右側は同じように動作しません。後方参照の
結果:
\1: ‘problemati’c”
\2: ‘problemati’c
\3: ‘problemati’”
あなたはそれを過剰キャプチャしました。 's = re.sub(rightQuotes、r '\ 2' '、s)'を使うか、不要なグループを削除して、保持しておかなければグループ1の逆参照を使用しないでください。 –
@WiktorStribiżewこれは私に「これは問題です」と答えています –
@ウィクショナリー投稿記事の中で最初に述べたように、すべての後方参照は望ましくない出力をもたらしました。 \ 1は「これは「problemati'c」です –