正则表达式的计数返回0而不是当前计数

时间:2017-01-19 19:38:53

标签: python

如果我有

模式“A * C”和我的 string是“AKKLSKLCAajaklDAajdklafdC”它应该返回2但它返回0.

string = input("What is the string?")
pattern = input("What is the pattern?")

print (len(re.findall(pattern,  string)))

我也试过

count = 0
match = re.search(pattern,string)
if match:
    count +=1

那也返回零。

1 个答案:

答案 0 :(得分:2)

两件事,

首先,给定的代码DOES返回2:

string = "AKKLSKLCAajaklDAajdklafdC"
pattern = "A*C"
print (len(re.findall(pattern, string)))

其次,你确定“A * C”是你想要匹配的模式吗?该模式要求零个或多个连续的A,紧接着是C,所以在示例字符串中,你只给出了两个C的匹配(例如“AKKLSKL C AajaklDAajdklafd C “)。如果你试图找到一个A,然后是一个C,其间有一些随机垃圾(例如“ AKKLSKLC AajaklD AajdklafdC ”),你想要“A. * C “相反。那是因为,对于正则表达式,'。' character是一个通配符,而不是'*',表示查找前面字符中的零个或多个。这与许多非正则表达式搜索器的工作方式不同,后者使用“*”作为通配符。