gpt4 book ai didi

regex - 在 Perl 中提取子字符串?

转载 作者:行者123 更新时间:2023-12-02 07:36:12 25 4
gpt4 key购买 nike

我在变量中有一个字符串:

$mystr = "some text %PARTS/dir1/dir2/myfile.abc some more text";

现在 %PARTS 确实存在于字符串中,它不是变量或散列。我想从中提取子字符串 %PARTS/dir1/dir2/myfile.abc 。我创建了以下 reg 表达式。我只是 Perl 的初学者。因此,如果我做错了什么,请告诉我。

my $local_file = substr ($mystr, index($mystr, '%PARTS'), index($mystr, /.*%PARTS ?/));

我什至试过这个:

my $local_file = substr ($mystr, index($mystr, '%PARTS'), index($mystr, /.*%PARTS' '?/));

但是如果我打印 $local_file,两者都不会给出任何结果。这里可能出了什么问题?谢谢。

更新:引用以下网站使用此方法:

  1. http://perlmeme.org/howtos/perlfunc/substr.html参见示例 1c
  2. How to take substring of a given string until the first appearance of specified character?

最佳答案

index 函数返回字符串中子字符串出现的第一个索引,否则返回-1。它与正则表达式无关。

使用绑定(bind)运算符 =~ 将正则表达式应用于字符串。

要提取正则表达式的匹配区域,请将模式括在括号中(捕获组)。匹配的子字符串将在 $1 中可用:

my $str = "some text %PARTS/dir1/dir2/myfile.abc some more text";
if ($str =~ /(%PARTS\S+)/) {
my $local_file = $1;
...; # do something
} else {
die "the match failed"; # do something else
}

\S 字符类将匹配每个非空格字符。

要了解正则表达式,您可以查看 perlretut .

关于regex - 在 Perl 中提取子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16336849/

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