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

标签 regex perl sed grep pattern-matching

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

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

my $content = 'toto /app/blah titi\nhuh/app/ttt wew';

我的模式是:/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";

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

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

my (@table) = @_;

该表不包含任何内容!

谢谢

最佳答案

您想要使用/g修饰符使正则表达式以列表形式返回所有匹配项:

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

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

关于regex - Perl 模式匹配,我们打印所有匹配部分,但仅打印匹配部分(而不是其余部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10507076/

相关文章:

Perl:如何将词法文件句柄作为命名参数传递和使用给子例程?

linux - 使用 sed 命令重复字符串中的数字两次

用于邮政信箱验证的 Java 正则表达式

c# - 将长字符串拆分为多行的正则表达式

c# - 如何在 C# 中将任意二进制数据输出为字符表示形式?

linux - 将 .dat 文件转换为 .xls 文件

C#正则表达式,只允许字母和数字,但不允许任何特殊字符或空格

Java替换匹配的正则表达式

regex - 使用 sed 用字符串为文件中的所有数字添加前缀

regex - 仅用 sed 替换与正则表达式匹配的第一次出现