我想删除任何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)
答案 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例如