Regex 如何创建一个正则表达式来匹配3位数或少于3位数的数字?

Regex 如何创建一个正则表达式来匹配3位数或少于3位数的数字?,regex,Regex,我想删除任何3位数或少于3位数的数字。有人能帮我弄一个能做这个的正则表达式吗 目前,我的代码删除了它找到的所有数字 # Cleans Numbers def cleanNumbers(stringToClean): stringToClean = re.sub(r'[0-9]*', r'', stringToClean) print 'String after cleaning : %s' %stringToClean retur

我想删除任何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 122 333 4444 554665 645fdgf45 ds3434 4578709789347843 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)

你可以用这样的正则表达式

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

编辑:对不起,我没有认真思考就给fast写了答案。您必须使用边界,以便不捕获3456,例如

\b[0-9]{1,3}\b
查找最多有三个数字的数字块

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

我已更正了问题“3或小于3”


考虑到这一点,它应该很简单:
\b\d{1,3}\b

这会不会抓住“1234”?你能决定是否要“删除少于3位的数字”或“3位或少于3位的数字”?这些数字会被空格或其他(非数字)字符包围,还是什么?你有一些字符串样本吗?@iamnotmaynard这没关系。如果这些数字被数字所包围(?!),它们会…更大的数字。根据定义,它们将超过三位数,并且不会被删除。我已经更正了“3或小于3”的问题,并添加了一个示例stringop说了很多事情。。如何创建一个正则表达式来匹配3位数或少于3位数的数字?这对我很有用。stringToClean=re.sub(r'\b[0-9]{1,3}\b',r'',stringToClean)从输入字符串中删除->123 1 22 333。谢谢附言:op是什么?我相信它是原创海报