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