小编sel*_*ine的帖子

使用Perl匹配两个重叠模式

我希望我的问题还没有被其他人提出,因为我试图在网站的任何地方看到但我无法找到答案.

我的问题是:我在做这具有检测的位置PERL脚本每次发生一个字符串中的另一种模式.

例如:

$string = "betaalphabetabeta";
$pattern = "beta|alpha";
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我希望我的脚本返回4个匹配项.

我认为这可以通过使用匹配运算符轻松实现,如下所示:

$string =~ /beta|alpha/g;
Run Code Online (Sandbox Code Playgroud)

但是,由于我的两个模式("alpha","beta")部分重叠,我刚刚发布的代码片段在与第二个模式重叠时跳过第一个模式的任何出现.

例如,如果我有一个像这样的字符串:

$string = "betalphabetabeta";
Run Code Online (Sandbox Code Playgroud)

它只返回3个匹配而不是4个.

我试图用?=运算符做一些事情,但我无法以正确的方式将它与OR运算符联系起来......

有没有人有任何解决方案?谢谢你的帮助!

regex perl pattern-matching

6
推荐指数
2
解决办法
2008
查看次数

标签 统计

pattern-matching ×1

perl ×1

regex ×1