Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Perl正则表达式模式与保存的变量匹配_Regex_Perl - Fatal编程技术网

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

Regex Perl正则表达式模式与保存的变量匹配,regex,perl,Regex,Perl,我需要使用两个变量进行模式匹配,一个包含字符串,另一个包含正则表达式模式 我尝试了以下程序 #!/usr/bin/perl my $name = "sathish.java"; my $other = '*.java'; if ( $name =~ m/$other/ ) { print "sathish"; } 我失踪的地方请帮忙 谢谢 Sathishkumar“*.java”不是有效的正则表达式。您可能希望使用以下代码: my $other = '\.java$'; if ($na

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

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

 }
我失踪的地方请帮忙

谢谢
Sathishkumar“*.java”不是有效的正则表达式。您可能希望使用以下代码:

my $other = '\.java$';
if ($name =~ m/$other/) {

您可以使用以下更适合您需要的样式

$other = "*.java";
if ($name =~m/^$other/){}

--SJ

@Shmuel answer适合您的需要,但如果您正在寻找从完整路径名中提取文件名的常用方法,则可以使用:

它打印:

name: test
path: /example/path/
suffix: .java

我喜欢Shmuel的答案,但我猜您可能也想将正则表达式的第一部分捕获到变量中

如果是,请使用

my $other = '\.java$';
if ($name =~ m/(\D*)$other/) {
  print $1;
# prints "sathish"
}

谢谢miguel,但这里我的问题是从数据库中设置值,我的模式类似于,,*java,所以我将动态地使用这个in变量,所以我需要检查来自后端和字符串的模式
my $other = '\.java$';
if ($name =~ m/(\D*)$other/) {
  print $1;
# prints "sathish"
}