我有这个字符串
$string = "create or replace view COMPLEX_NAME_2 (b21d,21ld21)";
我想获取COMPLEX_NAME_2
并打印出来。
请记住,COMPLEX_NAME_2
是我需要查找的子字符串,它会更改其值。我不知道如何在字符串中获取该位置的子字符串 - 子字符串的值无关紧要。
我试过
$string =~ m/view/gi;
print $';
但问题是它还打印(b21d,21ld21)
,我只需要名称。
答案 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";
}
在这里演示:
答案 1 :(得分:0)
如果子字符串中从不存在任何空格,那么您可以使用捕获来保存view
之后的所有非空格字符
喜欢这个
if ( $string =~ /view\s+(\S+)/ ) {
print $1, "\n";
}