【问题标题】:Insert space between characters regex在字符正则表达式之间插入空格
【发布时间】:2016-08-17 13:49:15
【问题描述】:

我对正则表达式非常陌生,我正在尝试在字符串中查找存在由字母 w 或 e 后跟 2 位数字组成的单词的实例,例如 e77 @ 987654327@等

这是我目前拥有的正则表达式,我认为它发现了(如果我错了,请纠正我)

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

如何在字母e 或w 之后添加空格?如果没有满足条件的实例,我想保持字符串不变。我需要使用 re.sub 吗?我已经阅读了一些相关内容。

输入:hello e77 world

所需输出:hello e 77 world

谢谢。

【问题讨论】:

  • 你没有测试你的正则表达式吗?因为它实际上并没有在您的输入中找到e77。
  • 尝试在这里测试你的正则表达式regex101.com/#python
  • @WayneWerner 我认为它正在找到它,不是吗? regexr.com/3e1j5 但是,我知道它并不完全准确,因为它也匹配所有出现的 e/w。
  • 也许这会有所帮助:regex101.com/r/aC4aE2/1 ?
  • @hl95 匹配它,是的,但它匹配的案例太多了,因为\d{0,2} 之后的几乎所有内容都永远不会匹配。

标签: python regex


【解决方案1】:

您的正则表达式需要如下所示:

([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'

【讨论】:

    【解决方案2】:

    这就是你所追求的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多