如何在Python中使用re替换两位数之间的字符?

如何在Python中使用re替换两位数之间的字符?,python,regex,Python,Regex,我想处理字符串数据集,并用“.”替换“-” 我有以下数据集: AUDI XXX-R 2-0TS AUDI XXX-R 2-0T AUDI X-R 2-0 我希望将“-”替换为“.”,因此所有出现的数字**都应替换为number.number** 我尝试添加以下正则表达式模式,但它也替换了字母表的“-” [^a-z-A-Z]?(\d)-(\d)?[a-zA-Z]?[a-z-A-Z] 我需要这样一种模式,即无论字符串是什么,两个数字之间的“-”都应替换为“.”我们可以使用: from re im

我想处理字符串数据集,并用“.”替换“-” 我有以下数据集:

AUDI XXX-R 2-0TS
AUDI XXX-R 2-0T
AUDI X-R 2-0
我希望将“-”替换为“.”,因此所有出现的数字**都应替换为number.number**

我尝试添加以下正则表达式模式,但它也替换了字母表的“-”

[^a-z-A-Z]?(\d)-(\d)?[a-zA-Z]?[a-z-A-Z]
我需要这样一种模式,即无论字符串是什么,两个数字之间的“-”都应替换为“.”

我们可以使用:

from re import compile as recompile

rgx = recompile(r'(?<=\d)[-](?=\d)')
如果右边的数字是可选的,我们可以省略它,如:

rgx = recompile(r'(?<=\d)[-]')

rgx=recompile(r'(?不只是
(\d)-(\d)
工作吗?替换为
\1.\2
@Williem Van Onsen一切都很好,直到这是2-5倍的巡演,这个雷米安人没有被触动,我很难过为什么。@SaifAli:两个正则表达式都返回
“2.5倍的巡演”
,用于输入
rgx.sub(',“2-5倍的巡演”)
local。好的,谢谢!但是我的数据集现在只有一件事2-4 FORD XXX,所以我只希望在数字前面有文本时替换“-”。
rgx = recompile(r'(?<=\d)[-]')