python中重复数字的正则表达式

时间:2017-11-24 14:29:45

标签: python regex

我正在使用" numbr"替换数据源中的所有数字。一些例子是

  1. 1234-546-234235-1232-1242-123124 - > numbr
  2. 125436 - > numbr
  3. abc1231241 - > abcnumbr
  4. 我尝试过使用re.sub(r'(\ d + [/ - ] * \ d +)(R?)'," numbr",token)但它不是正确地替换示例1。我缺少什么想法?

1 个答案:

答案 0 :(得分:5)

代码

See regex in use here

(?:\d-\d|\d)+

可以使用另一个替代(?:\d(?:-\d)?)+,但需要一个额外的步骤才能完成。

结果

输入

1234-546-234235-1232-1242-123124
125436
abc1231241

输出

numbr
numbr
abcnumbr

说明

  • (?:\d-\d|\d)+匹配以下任意一次或多次
    • \d-\d匹配一个数字,后跟一个连字符-,后跟一个数字
    • \d匹配数字

使用(?:\d-\d|\d)+代替[\d-]+的原因是我们不会意外地替换有效的带连字符的字词,以使my-name之类的内容变为mynumbrname或{{1 }}不会成为abc-1234,而是成为abcnumbr