前提・実現したいこと
re.subで正規表現でマッチさせて文字置換をするコードを書きました。
line1 = "aaa"
line2 = "bbb ccc=ddd,eee"
こういったときに、line2のddd部分を、aaaに変換するコードです。
上記の場合、期待通りに、「bbb ccc=ddd,eee」となりました
しかし、line1が"21aaa"など数値から始まるとき、
「bbbQaaa,eee」となりました。
期待としては、数値から始まっていても、
「bbb ccc=21aaa,eee」となってほしいです。
発生している問題・エラーメッセージ
bbbQaaa,eee
該当のソースコード
python
1line1 = "21aaa" 2line2 = "bbb ccc=ddd,eee" 3line3 = re.sub(r"((^ccc|[ ,\t]ccc)[ \t]*=)[ \t]*.*?([, \n\t])", r"\1" + line1 + r"\3", line2, flags=re.IGNORECASE) 4print(line3)
試したこと
数値を21から数を増やして変えて見たところ、アルファベット順に変化していきました。(文字コードか何か?)
正規表現の=が怪しいのかと思って調べてみたのですが、原因がわかりませんでした。
補足情報(FW/ツールのバージョンなど)
reのversion 2.2.1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/13 05:22