真心请教,perl里面如何把正则表达式当参数传进来?
时间:2011-11-15
来源:互联网
如下面描述:
Perl code
这个$line是正则,存在Testfile里,写出来就是
/Test-(\d+)/i && $1 == 123
我发现如果直接写表达式上去,可以打出‘matching’,但如果通过文件读出来的,这种把正则表达式当参数传进来,就不行了。debug时发现Perl给每个变量加了个单引号。
Perl code
my value="test-123"; open( OUTPUT_FILE, "c:\\Testfile" ) or die "cant open file"; while (<OUTPUT_FILE>) { $line = $_; if ( $value =~ $line ) { print "matching"; } } close(OUTPUT_FILE);
这个$line是正则,存在Testfile里,写出来就是
/Test-(\d+)/i && $1 == 123
我发现如果直接写表达式上去,可以打出‘matching’,但如果通过文件读出来的,这种把正则表达式当参数传进来,就不行了。debug时发现Perl给每个变量加了个单引号。
作者: windforcecn 发布时间: 2011-11-15
'/Test-(\d+)/i && $1 == 123'本身作为一个正则表达式了,而不是把'Test-(\d+)'作为正则表达式。
作者: iambic 发布时间: 2011-11-15
是啊,文件里存的就是整个/Test-(\d+)/i && $1 == 123
怎么把这个传给Perl去匹配呢?
怎么把这个传给Perl去匹配呢?
作者: windforcecn 发布时间: 2011-11-15
没办法。另寻门路吧。比如(?i)Test-(123)。
作者: iambic 发布时间: 2011-11-15
这种还好说一点,但如果这种情况呢?有没有办法?
/Test-(\d+)/i && ($1 >= 100 && $1 <= 150)
/Test-(\d+)/i && ($1 >= 100 && $1 <= 150)
作者: windforcecn 发布时间: 2011-11-15
Test-(1[0-4]\d|150)
作者: iambic 发布时间: 2011-11-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28