Perl模式匹配我们打印所有匹配的部分,但只有匹配的部分(而不是其余部分)

use*_*162 3 regex perl grep sed pattern-matching

我正在寻找一个在Perl中执行此操作的解决方案.

示例:如果我的字符串是:

my $content = 'toto /app/blah titi\nhuh/app/ttt wew';
Run Code Online (Sandbox Code Playgroud)

我的模式是:/app/something我想在数组中得到输出:/app/blah/app/ttt.

(这基本上是grep -E -o '\/app\/[a-z]*'做什么的)

我做不到!我试过了:

my $content = 'toto /app/blah titi\nhuh/app/ttt wew';
$content =~ m/(\/app\/[a-z]*)/;
print "Group: $1 $2\n";
Run Code Online (Sandbox Code Playgroud)

但这只打印:( /app/blah不是/app/ttt)

无论如何,我不知道如何将结果放在表格中:

my (@table) = @_;
Run Code Online (Sandbox Code Playgroud)

该表不包含任何内容!

谢谢

mob*_*mob 5

您希望使用/g修饰符使正则表达式将所有匹配作为列表返回:

@table = $content =~ m/(\/app\/[a-z]*)/g;
print "Group: @table\n";
Run Code Online (Sandbox Code Playgroud)

此外,@_与正则表达式没有任何关系.相反,它是传递给当前子例程的参数列表.