替换python的正则表达式

替换python的正则表达式,python,python-3.x,Python,Python 3.x,我喜欢用新字符串“MEMORY247”代替0.0MB、2GB、0Gb…字符串,我在下面尝试过,但结果不正确。请使用python告诉我正确的正则表达式 b=re.sub(“\d.(\s\w+b)”,'MEMORY247','0.0Mb不够2GB比3.4gb多出0 GB空间') 谢谢 Mukthar给你: re.sub("\d+\.*\d*\w*", 'MEMORY247', '0.0Mb is not enough 2GB is much 0gb more space 3.4gb') 这意味着:

我喜欢用新字符串“MEMORY247”代替0.0MB、2GB、0Gb…字符串,我在下面尝试过,但结果不正确。请使用python告诉我正确的正则表达式

b=re.sub(“\d.(\s\w+b)”,'MEMORY247','0.0Mb不够2GB比3.4gb多出0 GB空间')

谢谢 Mukthar

给你:

re.sub("\d+\.*\d*\w*", 'MEMORY247', '0.0Mb is not enough 2GB is much 0gb more space 3.4gb')
这意味着:

  • \d+查找至少一个数字
  • 可能有一个点
  • \可能还有更多的数字
  • \可能有一些字符
这个正则表达式甚至更好:

"\d+\.*\d*[kKmMgG][bB]"
试试下面的方法

>>>st='0.0Mb is not enough 2GB is much 0gb more space 3.4gb'
>>>re.sub('(\d+\.*\d*((MB)|(GB)))','MEMORY247',st,flags=re.IGNORECASE)
>>>'MEMORY247 is not enough MEMORY247 is much MEMORY247 more space MEMORY247'
>>>
您正在搜索的模式是

  • 数字\d+
  • 后跟一个可选点*
  • 后跟可选数字\d*
  • 后跟GB或MB((MB)|(GB))

要使匹配不区分大小写,请将re.IGNORECASE作为标志传递

您不太清楚要实现什么。在您的问题中,您能否发布A)替换前示例字符串的样子,以及B)替换后相同的示例字符串?此RE将匹配
3muskeers
,以及
和1
。更具体一点怎么样?不公平,对于给定的字符串它可以工作。谁说输入是完全随机的?所以它匹配货币0.00rs作为内存处理并给出错误的结果..请告诉我这个的确切解决方案。。