Perl正则表达式模式与保存的变量匹配

时间:2014-08-01 06:20:03

标签: regex perl

我需要与两个变量进行模式匹配,一个包含字符串,另一个包含正则表达式模式 我试过以下程序

#!/usr/bin/perl
my $name = "sathish.java";
my $other = '*.java';
if ( $name =~ m/$other/ )
{
  print "sathish";

 }

帮助失踪的地方

由于 Sathishkumar

4 个答案:

答案 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"
}