gpt4 book ai didi

python - 如何替换所有出现的正则表达式,就像重复应用替换一样

转载 作者:太空狗 更新时间:2023-10-30 01:00:19 24 4
gpt4 key购买 nike

例如,我有很多产品尺寸的文本,例如“2x4”,我想将其转换为“2 xby 4”。

pattern = r"([0-9])\s*[xX\*]\s*([0-9])"

re.sub(pattern, r"\1 xby \2", "2x4")
'2 xby 4' # good

re.sub(pattern, r"\1 xby \2", "2x4x12")
'2 xby 4x12' # not good. need this to be '2 xby 4 xby 12'

描述我想要做的事情的一种方式是重复替换,直到无法进行更多替换。比如我可以简单的把上面的替换两次就可以得到我想要的

x = re.sub(pattern, r"\1 xby \2", "2x4x12")
x = re.sub(pattern, r"\1 xby \2", x)
'2 xby 4 xby 12'

但我认为有更好的方法

最佳答案

您可以使用这个前瞻性正则表达式进行搜索:

r'([0-9]+)\s*[xX*]\s*(?=[0-9]+)'

(?=[0-9]+) 是正向前瞻,它只是通过前瞻断言第二个数字的存在,但不会通过匹配数字来移动内部正则表达式指针。

并用它来替换:

r'\1 xby '

RegEx Demo

代码:

>>> pattern = r'([0-9]+)\s*[xX*]\s*(?=[0-9]+)'

>>> re.sub(pattern, r'\1 xby ', "2x4")
'2 xby 4'

>>> re.sub(pattern, r'\1 xby ', "2x4x12")
'2 xby 4 xby 12'

关于python - 如何替换所有出现的正则表达式,就像重复应用替换一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35948094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com