加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 22:56:21 所属栏目:百科 来源:网络整理
导读:我希望我的问题还没有被其他人提出,因为我试图在网站的任何地方看到但我无法找到答案. 我的问题是:我正在创建一个PERL脚本,它必须检测字符串中每个模式的每个位置的位置. 例如: $string = "betaalphabetabeta";$pattern = "beta|alpha"; 在这种情况下,我希
我希望我的问题还没有被其他人提出,因为我试图在网站的任何地方看到但我无法找到答案.

我的问题是:我正在创建一个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_Dataperlp>perl t9.pl
beta
alpha
beta
beta

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读