在字符间插入空格的正则表达式

4

我对正则表达式非常陌生,我正在尝试查找字符串中存在一个由字母 we 后跟 2 个数字组成的单词,例如 e77 w10 等等。

这是我目前拥有的正则表达式,我认为它可以找到符合条件的内容(如果我错了请纠正我)

([e|w])\d{0,2}(\.\d{1,2})?

如何在字母 ew 后面添加一个空格?如果没有符合条件的情况,则保留字符串不变。我需要使用 re.sub 吗?我已经读了一些相关信息。

输入:hello e77 world

期望输出:hello e 77 world

谢谢。


你没有测试你的正则表达式吗?因为它实际上没有在你的输入中找到 e77 - Wayne Werner
请在此处尝试测试您的正则表达式:https://regex101.com/#python - mkaran
@WayneWerner 我认为它已经找到了,不是吗?http://regexr.com/3e1j5 但是,我知道它并不完全准确,因为它也匹配了所有的 e/w 出现。 - hl95
2
也许这个链接会有帮助: https://regex101.com/r/aC4aE2/1 ? - Maria Ivanova
@hl95 匹配上了,是的,但是匹配了太多情况,因为\d{0,2}后面的几乎所有内容都没有被匹配到。 - R Nar
2个回答

14

您的正则表达式只需要像这样:

([ew])(\d{2})

如果你仅想匹配两个特定数字,或者

([ew])(\d{1,2})

如果您还想匹配像e4这样的单个数字,您可以使用括号来捕获匹配组,并且可以在搜索和替换或使用Python中的re.sub时进行反向引用。

您的替换字符串应该如下所示:

\1 \2

所以,它应该像这样简单的一行代码:

re.sub(r'([ew])(\d{1,2})', r'\1 \2', your_string)

编辑:可用代码

>>> import re
>>> your_string = 'hello e77 world'
>>>
>>> re.sub(r'([ew])(\d{1,2})', r'\1 \2', your_string)
'hello e 77 world'

1
这是你想要的内容:
import re

print(re.sub(r'([ew])(\d{1,2})', r'\g<1> \g<2>', 'hello e77 world'))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接