這個問題在這里已經有了答案: 如何僅用 python re.sub 替換部分匹配 (5 個回答) 2 小時前關閉。
我正在嘗試使用 python 中的正則運算式和 sub() 替換字串模式中的某些特定字符。
例如,
- 原文:
abc.xyz[1].klm.ijk - 轉換后的文本:
abc_xyz<1>_klm_ikj
基本上我想替換“。” 用“_”和“[”和“]”分別用“<”和“>”。“abc”“xyz”等部分在我擁有的文本中會有所不同,但模式將保持不變。
當我使用正則運算式替換時 -
re.sub(r'[a-zA-Z] \.[a-zA-Z] \[*.]\.[a-zA-Z] \.[a-zA-Z] ', r'[a-zA-Z] \_[a-zA-Z] \<*.>\_[a-zA-Z] \_[a-zA-Z] ', data)
它基本上是用整個字串替換匹配的模式 "[a-zA-Z] _[a-zA-Z] <*.>_[a-zA-Z] _[a-zA-Z] ”,原來如此。但是,我只需要替換點和方括號。
請幫忙。
uj5u.com熱心網友回復:
這就是捕獲組的用途。在要保留的模式部分周圍加上括號,然后在替換字串中使用反向參考來復制它們。
re.sub(r'([a-zA-Z] )\.([a-zA-Z] )\[(.*)]\.([a-zA-Z] )\.([a-zA-Z] )', r'\1_\2<\3>_\4_\5', data)
你還有一個錯字:*.應該是.*。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/391231.html
