gpt4 book ai didi

regex - 使用 Perl 匹配两个重叠模式

转载 作者:行者123 更新时间:2023-12-01 23:03:00 28 4
gpt4 key购买 nike

我希望其他人还没有提出我的问题,因为我尝试查看网站中的几乎所有位置,但无法找到答案。

我的问题是:我正在制作一个 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

关于regex - 使用 Perl 匹配两个重叠模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14259677/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com