【问题标题】:How can I remove numbers at the end of words?如何删除单词末尾的数字?
【发布时间】:2020-10-29 12:01:06
【问题描述】:

我想从一个字符串中删除数字,该字符串只是放在一个单词之后,没有任何空格。例如:

'Senku Ishigami is charecter from a manga series98 onging since 2017.'

应该是:

'Senku Ishigami is charecter from a manga series onging since 2017.'

我可以使用正则表达式'[a-z]+[0-9]+' 删除检测数字,但是当我不明白如何删除它时。我试图通过写'[a-z]' 来删除它,因为我认为它会起作用,但它只是将'[a-z]' 打印为字符串。

代码如下:

import re

text ='Senku Ishigami is charecter from a manga series98 onging since 2017.'
text = re.sub(r'[a-z]+[0-9]+', '[a-z]', text)
print(text)

输出:

Senku Ishigami is charecter from a manga [a-z] onging since 2017.

【问题讨论】:

  • re.sub(r'([a-z]+)(\d+)', r'\1', text) ?
  • 能否请您告知"Abc ab12cde567 ab68" 字符串的预期输出?

标签: python regex


【解决方案1】:

您还可以使用捕获组在匹配 1 个以上数字之前仅捕获单个字符。

在使用\1的替换组1中

([a-z])\d+\b

regex demo

import re

text ='Senku Ishigami is charecter from a manga series98 onging since 2017.'
text = re.sub(r'([a-z])\d+\b', r'\1', text)
print(text)

输出

Senku Ishigami is charecter from a manga series onging since 2017.

【讨论】:

    【解决方案2】:

    你可以使用

    import re
    
    text ='Senku Ishigami is charecter from a manga series98 onging since 2017.'
    text = re.sub(r'(?<=[a-z])\d+\b', '', text)
    print(text) # => Senku Ishigami is charecter from a manga series onging since 2017.
    

    查看regex demoPython demo

    正则表达式详细信息

    • (?&lt;=[a-z]) - 紧跟在小写 ASCII 字母前面的位置
    • \d+ - 一位或多位数字
    • \b - 单词边界(数字只会在单词末尾匹配)。

    【讨论】:

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