[解決済み] python re.subでマッチの一部分だけを置換する方法
2023-06-08 12:21:23
質問
1つのREG式で2つのケースをマッチさせ、置換を行う必要があります。
'long.file.name.jpg' -> 'long.file.name_' -> 'long.file.name_' -> 'long.file.name_' -> suff .jpg'
'long.file.name_ a .jpg' -> 'long.file.name_ suff .jpg'
以下のようにしようとしています。
re.sub('(\_a)?\.[^\.]*$' , '_suff.',"long.file.name.jpg")
しかし、これは拡張子'.jpg'をカットしているので
long.file.name_suff.ではなく、long.file.name_suff.となります。 これは[^.]*$の部分が原因だと理解しているのですが、これを除外することができないのです。 最後の'_a'を置換するか、最後の'.'を見つけなければならないからです。
マッチした部分のみを置換する方法はありますか?
どのように解決するのですか?
re.sub(r'(?:_a)?\.([^.]*)$', r'_suff.\1', "long.file.name.jpg")
?:
は、マッチしないグループ (
SO回答
) が始まるので
(?:_a)
が一致するのは
_a
にマッチするが、列挙はしないので、次のクエスチョンマークでオプションにする。
つまり、英語では、これは、末尾に一致する
.<anything>
に続く(あるいは続かない)パターン
_a
もう一つの方法として、このように ルックビハインド ( こちらをご覧ください ). 超便利なのですが、15年間REをやっていて知らなかったので、これを書いておきます。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] Python 言語を決定するには?
-
[解決済み] Pythonの文字列書式をリストで使う
-
[解決済み] Pythonの辞書にあるスレッドセーフについて