正则表达式 – 使用Perl匹配两个重叠模式

前端之家收集整理的这篇文章主要介绍了正则表达式 – 使用Perl匹配两个重叠模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望我的问题还没有被其他人提出,因为我试图在网站的任何地方看到但我无法找到答案.

我的问题是:我正在创建一个PERL脚本,它必须检测字符串中每个模式的每个位置的位置.

例如:

$string = "betaalphabetabeta";
$pattern = "beta|alpha";

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

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

$string =~ /beta|alpha/g;

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

例如.如果我有这样的字符串:

$string = "betalphabetabeta";

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

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

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

以下使用零宽度断言(我相信这就是所谓的).
#!/usr/bin/perl
use strict;
use warnings;

$_ = "betalphabetabeta";

while (/(?=(alpha|beta))/g) {
    print $1,"\n";

打印:

C:\Old_Data\perlp>perl t9.pl
beta
alpha
beta
beta
原文链接:https://www.f2er.com/regex/356712.html

猜你在找的正则表达式相关文章