加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间: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'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读