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

标签 python regex

我想处理字符串数据集并将“-”替换为“.” 我有这个数据集:

AUDI XXX-R 2-0TS
AUDI XXX-R 2-0T
AUDI X-R 2-0

我希望将“-”替换为“.”所以所有出现 number-number** 的地方都应该替换为 number.number**

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

[^a-z-A-Z]?(\d)-(\d)?[a-zA-Z]?[a-z-A-Z]

我需要这样一种模式,无论字符串是什么,两个数字之间的“-”都应该替换为“.”

最佳答案

我们可以使用lookaround constructs [regular-expressions.info]为此:

from re import compile as recompile

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

对于这个 rgx,我们可以这样替换:

>>> rgx.sub('.', 'AUDI XXX-R 2-0TS AUDI XXX-R 2-0T AUDI X-R 2-0')
'AUDI XXX-R 2.0TS AUDI XXX-R 2.0T AUDI X-R 2.0'

如果右边的数字是可选的,我们可以省略它,比如:

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

因此,这也将用 3.A 替换 3-A

关于python - 如何在 Python 中使用 re 替换两个数字之间的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56941501/

相关文章:

python - 欧拉计划 78 - 硬币分区

python - ubuntu 上的 lunatic-python/lupa 导入问题

python - 排除匹配 [\W\d]+ 正则表达式中的句点字符

php - 用括号外的逗号分解字符串

Javascript 正则表达式在选择正斜杠时中断

调用函数时python 'module'对象不可调用

python - OpenCV 掩蔽图像 - 错误:(-215) (mtype == 0 || mtype == 1) && _mask.sameSize(*psrc1) 在函数 cv::binary_op 中

python - 无论matplotlib中箭头的角度如何,使箭头形状对称

c# - 如何编写这个 Regex 表达式?

javascript - 如何在javascript中使用空格和 "|"分割字符串