如何创建匹配3或3位数字的正则表达式?

时间:2013-02-26 21:08:11

标签: regex

我想删除任何3位或3位以下的数字。有人可以帮我一个这样做的正则表达式吗?

目前,我的代码会删除它找到的所有数字。

     # Cleans Numbers
     def cleanNumbers(stringToClean):
       stringToClean = re.sub(r'[0-9]*', r'', stringToClean)

       print 'String after cleaning : %s' %stringToClean

       return stringToClean

数字将被空格包围。示例字符串我传入函数:

一段时间后,

连接在Win8客户端上中断。 [持久性] 123 1 22 333 4444 554665 645fdgf45 ds3434 457870978934787843 345342kl

我按以下方式调用上述函数:

# Main function, calls other functions          
def main():

   # Parsing the input query
   searchQuery = open('input.txt', 'r').read()
   print 'Input query : %s' %searchQuery

   # Cleaning the input query
   string = CleanUpText.cleanNumbers(searchQuery)

4 个答案:

答案 0 :(得分:7)

\b[0-9]{1,3}\b查找最多包含三位数的数字块。

答案 1 :(得分:1)

re.sub(r'[0-9]{,3}',r'',stringToClean)

答案 2 :(得分:1)

  

我更正了问题,'3或少于3'

鉴于此,它应该如下:\b\d{1,3}\b

答案 3 :(得分:-1)

您可以使用像这样的正则表达式

r'\b[0-9]{1,2}\b'

编辑:抱歉写了我的快速回答,没有真正思考。您必须使用边界,因此您不会捕获3456例如