已关闭,该问题需要details or clarity,目前不接受回答。
**想要改进此问题?**通过editing this post添加详细信息并澄清问题。
昨天关门了。
Improve this question
我想换掉
[0-9]+e|E\+[0-9]+ with [0-9]+e|Eplus[0-9]+
和
[0-9]+e|E-[0-9]+ with [0-9]+e|Eminus[0-9]+
我尝试了这个python脚本:
re.sub(r'[0-9]+[eE]\+[0-9]+$', r'[0-9]+[eE]plus[0-9]+$', 'a1e+1b+a')
我希望得到'a1eplus1b+ a',但它不起作用。如何正确地做到这一点?
1条答案
按热度按时间igsr9ssn1#
re.sub
的第二个参数不是正则表达式。您需要使用完全不同的语法来替换字符串。简单地说,您可以使用\1
,\2
等引用编号匹配组;...或者,您可以使用lookarounds来匹配和替换您真正想要替换的部分:
第二个也很好地扩展到一个解决方案,您可以在其中一举执行减号和加号:
在这里,
lambda
表达式接收对应于匹配的re.Match
对象,并使用其.group()
方法提取匹配的字符串。我们将其用作替换字典的索引,以获得对应于'plus'
或'minus'
的拼写字符串。Python的
re
模块不允许lookarounds是可变长度的,但这在这里并没有什么用处,所以我只是在[0-9]
之后去掉了+
。还要注意,我去掉了$
,这阻止了测试用例的匹配。