re中的正则表达式用于匹配具有2个以上数字的单词

2024-03-29 11:10:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用re查找单词中任意位置有两个以上数字的单词,因此我想返回:

aaabbbccc123

但不是:

aaabbbccc12

唯一的诀窍是数字应该可以出现在任何地方:

aaa1bbb2ccc3 aaa12bbbccc3


Tags: re地方数字单词诀窍aaa12bbbccc3aaa1bbb2ccc3aaabbbccc12
3条回答
import re

arr = ["aaabbbccc123","aaabbbccc12","aaa1bbb2ccc3 aaa12bbbccc3"]
for x in arr:
    m = re.match(r"(.*\d.*\d.*\d.*)",x)
    if(m) : print(m.group(1))

结果

aaabbbccc123
aaa1bbb2ccc3 aaa12bbbccc3

您可以使用函数re.findall查找模式为\d的字符串中的所有数字re.findall将返回一个已建立数字的数组。然后,使用函数len获取数组的长度

我还在Python上测试了结果

import re

string = "aaabbbccc123"
resultStringOne = re.findall(r"\d", string)

if len(resultStringOne) > 2:
    print("resultStringOne")
    print(resultStringOne)

string = "aaabbbccc12"
resultStringTwo = re.findall(r"\d", string)
if len(resultStringTwo) > 2:
    print("resultStringTwo")
    print(resultStringTwo)

string = "aaa1bbb2ccc3 aaa12bbbccc3"
resultStringThree = re.findall(r"\d", string)
if len(resultStringThree) > 2:
    print("resultStringThree")
    print(resultStringThree)

结果

resultStringOne
['1', '2', '3']
resultStringThree
['1', '2', '3', '1', '2', '3']

您不需要re来完成以下操作:

import string
len([x for x in "aaabbbccc123" if x in string.digits]) > 2 # True
len([x for x in "aaabb1bccc2" if x in string.digits]) > 2 # False
len([x for x in "aa1abb2bccc3" if x in string.digits]) > 2 # False

相关问题 更多 >