【发布时间】:2012-02-17 07:49:48
【问题描述】:
如何使用 Python 获取 重叠正则表达式 匹配的数量?
我已阅读并尝试了来自 this、that 和其他一些问题的建议,但没有发现适合我的方案。这里是:
- 输入示例字符串:
akka - 搜索模式:
a.*k
一个合适的函数应该产生 2 作为匹配的数量,因为有两个可能的结束位置(k 字母)。
模式也可能更复杂,例如a.*k.*a 也应该在akka 中匹配两次(因为中间有两个k)。
【问题讨论】:
-
我认为您的意思是 非-重叠的正则表达式匹配。
-
@jcollado 我想我的意思是重叠。
b.*o应该在bboo中找到 4 次。 -
this answer 有什么问题?
-
这在 Perl 中很容易做到,只使用一个模式匹配,但我不知道如何让 Python 正常工作。例如:Perl 中的
() = "bbboobbooo" =~ /(b.*o)(?{push @all, $1})(*FAIL)/g; printf "got %d matches: %s\n", scalar(@all), "@all";将打印出got 21 matches: bbboobbooo bbboobboo bbboobbo bbboo bbbo bboobbooo bboobboo bboobbo bboo bbo boobbooo boobboo boobbo boo bo bbooo bboo bbo booo boo bo。这就是你要找的吗? -
@tchrist 哇...如果在 perl 中执行起来要简单得多,我将改用该语言。 (反正我几乎都不知道...)
标签: python regex string pattern-matching