找到子字符串并打印它

时间:2017-07-09 12:59:39

标签: regex string perl

我有这个字符串

$string = "create or replace view COMPLEX_NAME_2 (b21d,21ld21)";

我想获取COMPLEX_NAME_2并打印出来。

请记住,COMPLEX_NAME_2是我需要查找的子字符串,它会更改其值。我不知道如何在字符串中获取该位置的子字符串 - 子字符串的值无关紧要。

我试过

$string =~ m/view/gi;
print $';

但问题是它还打印(b21d,21ld21),我只需要名称。

2 个答案:

答案 0 :(得分:1)

您可以稍微更改当前的方法,以便从查询中添加capture group to extract the view name。然后,在进行匹配后使用特殊变量$1访问该捕获组。

$string="create or replace view COMPLEX_NAME_2 (b21d,21ld21)";
if ($string=~m/view\s+(\S+)/) {
    print $1;
} else {
    print "no match";
}

在这里演示:

Rextester

答案 1 :(得分:0)

如果子字符串中从不存在任何空格,那么您可以使用捕获来保存view之后的所有非空格字符

喜欢这个

if ( $string =~ /view\s+(\S+)/ ) {
    print $1, "\n";
}