如何替换所有出现的正则表达式,就像重复应用替换一样
发布时间:2020-12-14 06:00:34 所属栏目:百科 来源:网络整理
导读:例如,我有很多产品尺寸的文本,如“2×4”,我想将其转换为“2 xby 4”. pattern = r"([0-9])s*[xX*]s*([0-9])"re.sub(pattern,r"1 xby 2","2x4")'2 xby 4' # goodre.sub(pattern,"2x4x12")'2 xby 4x12' # not good. need this to be '2 xby 4 xby 12' 描
例如,我有很多产品尺寸的文本,如“2×4”,我想将其转换为“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,"2x4x12") '2 xby 4x12' # not good. need this to be '2 xby 4 xby 12' 描述我想要做的事情的一种方法是重复替换,直到不能再进行替换.例如,我可以简单地对上面的替换进行两次以获得我想要的东西 x = re.sub(pattern,"2x4x12") x = re.sub(pattern,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,"2x4x12") '2 xby 4 xby 12' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |