2016-08-17 88 views
-2

我很新的正则表达式,我试图找到实例在存在既包括信we其次是2个位数的字一个字符串,如e77w10等。插入空间的正则表达式

下面是我目前拥有的正则表达式,我觉得发现(纠正我,如果我错了)

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

我怎么能信ew之后添加一个空格?如果没有符合条件的实例,我想保留字符串。我需要使用re.sub吗?我读过一些关于这个的内容。

输入:hello e77 world

所需的输出:hello e 77 world

谢谢。

+0

你没有*测试*你的正则表达式吗?因为它实际上并没有在你的输入中找到'e77'。 –

+0

尝试在这里测试你的正则表达式https://regex101.com/#python – mkaran

+0

@WayneWerner我认为这是找到它,不是吗? http://regexr.com/3e1j5然而,我知道它并不完全准确,因为它也匹配所有的e/w。 – hl95

回答

5

你的正则表达式需要只是看起来像这样:

([ew])(\d{2}) 
如果你想只匹配特别是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'))