我需要与两个变量进行模式匹配,一个包含字符串,另一个包含正则表达式模式 我试过以下程序
#!/usr/bin/perl
my $name = "sathish.java";
my $other = '*.java';
if ( $name =~ m/$other/ )
{
print "sathish";
}
帮助失踪的地方
由于 Sathishkumar
答案 0 :(得分:1)
'*。java'不是有效的正则表达式。您可能想要使用此代码:
my $other = '\.java$';
if ($name =~ m/$other/) {
答案 1 :(得分:1)
@Shmuel回答符合您的需求,但如果您正在寻找从完整路径名中提取文件名的常用方法,则可以使用File::Basename:
use strict;
use warnings;
use File::Basename;
my ($name, $path, $suffix) = fileparse("/example/path/test.java", qw/.java/);
print "name: $name\n";
print "path: $path\n";
print "suffix: $suffix\n";
打印:
name: test
path: /example/path/
suffix: .java
答案 2 :(得分:0)
您可以使用更符合您需要的以下风格
$other = "*.java";
if ($name =~m/^$other/){}
- SJ
答案 3 :(得分:0)
我喜欢Shmuel的答案,但我猜你可能也想将正则表达式的第一部分捕获到变量中?
如果是,请使用
my $other = '\.java$';
if ($name =~ m/(\D*)$other/) {
print $1;
# prints "sathish"
}