这是该问题的后续行动.我已经了解到在Python中找到重叠的正则表达式匹配并不是直接的,因此决定进行额外的查询以了解Perl和Ruby如何经得起这项任务.
我想计算正则表达式与某个字符串的所有可能匹配的数量.而"全部"我的意思是结果应该考虑重叠和非唯一匹配.这里有些例子:
a.*k 应该匹配两次 "akka""bbboob"测试反对b.*o.*b应该产生6作为参考,这里是由tchrist建议的Perl 单行 - 它输出正确的匹配及其计数:
() = "bbboobb" =~ /(b.*o.*b)(?{push @all, $1})(*FAIL)/g; printf "got %d matches: %s\n", scalar(@all), "@all";
Run Code Online (Sandbox Code Playgroud)
唯一的问题是它会导致过多的资源用于测试用例,其中产生的匹配数量大约为数百万或更多.但据我所知,这是因为所有的比赛都是首次分组,之后才计算.我正在寻找一种只返回计数的资源高效解决方案.