txt = "this is a red house"
が存在するようになってきました。そしてリストがあります。
patterns = ["thi", "a r", "use"]
があります。
計画は私がTHI^sと戻ることを望んだa = re.sub("".join(patterns), "".join(patterns) + "^", txt)
、R ^編ハウス^があるを使用することでした。それほど多くではなく、という文字列をにもう一度印刷します。 re.search
が代わりに使用されている場合、実際にはNone
が返されるため、re.sub
は文字列を返すだけで何も見つかりません。
私はre.sub
はちょうど私はそれができると思っていた方法を使用することができない、そして私が誤って単純なループ内でそれを試みたことを考えて、この上のプラグを引っ張って準備ができていた:
for i in patterns:
a = re.sub(i, i + "^", txt)
print(a)
と、突然それは(ほとんど)働いた:THI^sが赤い家 [\ nを] あるこのAR ^編ハウス [\ n]はこれは赤い家^です。今私はそれを放棄することはできません。何が起こっている?
あなたの質問は何ですか? –
私は最初に、正規表現を動的に構築する前に、正規表現がどのように見えるべきかを考え出すことから始めます。構築された正規表現が何にもマッチしないので、 're.sub'へのあなたの呼び出しは元の入力を生成するので、何も置き換えられません。 – Blender
あなたはそれが私が思ったことだと分かります。そしてそれはループ内で一致しました。構築された正規表現が何にもマッチしない場合、なぜそこで動作しますか? –