小编jan*_*kes的帖子

再次计算重叠的正则表达式匹配

如何使用Python 获取重叠正则表达式匹配的数量 ?

我已阅读并尝试了建议,由这,这和其他一些问题,但没有找到,将我的情况下工作.这里是:

  • 输入示例字符串: akka
  • 搜索模式: a.*k

正确的函数应该产生2作为匹配数,因为有两个可能的结束位置(k字母).

模式也可能更复杂,例如a.*k.*a也应该匹配两次akka(因为k中间有两个).

python regex string pattern-matching

7
推荐指数
1
解决办法
530
查看次数

在Perl或Ruby中计算重叠的正则表达式匹配

这是该问题的后续行动.我已经了解到在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)

唯一的问题是它会导致过多的资源用于测试用例,其中产生的匹配数量大约为数百万或更多.但据我所知,这是因为所有的比赛都是首次分组,之后才计算.我正在寻找一种只返回计数的资源高效解决方案.

ruby regex perl

2
推荐指数
1
解决办法
569
查看次数

标签 统计

regex ×2

pattern-matching ×1

perl ×1

python ×1

ruby ×1

string ×1