gpt4 book ai didi

regex - 使用正则表达式匹配字符串中的连续字符

转载 作者:行者123 更新时间:2023-12-01 08:21:14 25 4
gpt4 key购买 nike

我不知道如何命名这个问题,所以继续...

我希望能够匹配作为较大字符串子集的字符串的一部分。例如:

  • MatchPartOfThisString -> 引用字符串
  • fThisDiff -> 字符串我想说匹配 5 个连续字符

我想我可以遍历第一个字符串,从引用字符串中获取最小连续匹配数,然后查看另一个字符串是否与我系统地尝试匹配的每个匹配项匹配:

if(fThisDiff =~ /Match/) {
do something...;
}
if(fThisDiff =~ /atchP/) {
do something...;
}
if(fThisDiff =~ /tchPa/) {
do something...;
}

等等

如果有一种方法可以使用单数正则表达式重复解释引用字符串的某些部分,我想更优雅地执行此操作。我不认为是这种情况,但无论如何我都想确认。

最佳答案

以下是使用内置工具手动完成的基本操作。

使用您的引用字符串中所需长度的子字符串交替构建一个正则表达式模式。

use warnings;
use strict;
use feature 'say';

sub get_alt_re {
my ($str, $len) = @_;
$len //= 1; #/
my @substrings;
foreach my $beg (0 .. length($str)-$len) {
push @substrings, substr($str, $beg, $len);
}
return '(' . join('|', map quotemeta, @substrings) . ')';
}

my $ref = q(MatchPartOfThisString);
my $target = q(fThisDiff);

my $re = get_alt_re($ref, 5);

my @m = $target =~ /$re/g;
say for @m;

打印 fThis 行。

代码应该更加健壮和通用。然后,它很容易修改以匹配一系列长度(不仅仅是一个,上面的 5 个)。此外,它可以将库用于子任务(那些对 substr 的重复调用请求 C 代码)。但这表明基本解决方案可以相当简单。

关于regex - 使用正则表达式匹配字符串中的连续字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59794793/

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