gpt4 book ai didi

arrays - 如何搜索字符串中正则表达式模式的重叠匹配项

转载 作者:行者123 更新时间:2023-12-05 00:58:00 24 4
gpt4 key购买 nike

我有这个字符串

my $line = "MZEFSRGGRMEAZFE*MQZEFFMAEZF*"

我想找到以 M 开头的每个子字符串并以 * 结尾并将其添加到数组中。这意味着上面的字符串会给我的数组中的 6 个元素。

我有这个代码
foreach ( $line =~ m/M.*?\*/g ) {
push @ORF, $_;
}

但它只给了我数组中的两个元素,因为它忽略了重叠的字符串。

有没有办法获得所有比赛?我尝试谷歌搜索,但找不到答案。

最佳答案

可以用 code within re Backtracking control verbs 为了一点魔法:

#!/usr/bin/env perl

use strict;
use warnings;

my $line = "MZEFSRGGRMEAZFE*MQZEFFMAEZF*";

local our @match;

$line =~ m/(M.*\*)(?{ push @match, $1 })(*FAIL)/;

use Data::Dump;

dd @match;

输出:
(
"MZEFSRGGRMEAZFE*MQZEFFMAEZF*",
"MZEFSRGGRMEAZFE*",
"MEAZFE*MQZEFFMAEZF*",
"MEAZFE*",
"MQZEFFMAEZF*",
"MAEZF*",
)

关于arrays - 如何搜索字符串中正则表达式模式的重叠匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33713575/

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