标题: 模式匹配请教
aple_smx
新生入学
Rank: 1
注册用户



UID 69718
精华 0
积分 0(积分有什么用?)
帖子 1
阅读权限 10
注册 2004-1-7
状态 离线
发表于 2006-6-13 13:57  资料  个人空间  短消息  加为好友 
模式匹配请教

在perl的模式匹配中,能不能把一个变量当作匹配条件,如果可以应该怎么写呢?

ex:
$findtag = trim($a);
$newtag = trim($b);

if( $line =~ /^\s+\<\$findtag\>\S*\<\/\$findtag\>/ )[/COLOR]{
         print "-------find a match-------";
         next;
}

how to write the expression filled in red.

顶部
不容错过的IBM 集群技术资源汇总
shuai4503
新生入学
Rank: 1
注册用户



UID 140084
精华 0
积分 0(积分有什么用?)
帖子 1
阅读权限 10
注册 2005-11-1
状态 离线
发表于 2006-9-27 19:38  资料  个人空间  短消息  加为好友 
没人知道么?

顶部
不容错过的IBM 集群技术资源汇总
xiaohuforever
新生入学
Rank: 1
注册用户



UID 66165
精华 0
积分 0(积分有什么用?)
帖子 10
阅读权限 10
注册 2003-12-12
状态 离线
发表于 2007-1-15 19:56  资料  个人空间  短消息  加为好友 
匹配字符串被视为双引号引用的字符串,所以会先执行其中的变量替换,所以变量可以当作匹配条件
比如:
[B]$foo = 'house';
'cathouse' =~ /cat$foo/;   # matches
'housecat' =~ /${foo}cat/; # matches[/B]

你给的[B]^\s+\<\$findtag\>\S*\<\/\$findtag\>[/B]这个表达式我感觉
"<"和"$"都不需要转义,findtag应该加{}来确定变量名的范围
所以应该写为
^\s+<${findtag}>\S*<\/${findtag}\>
你可以参考http://aspn.activestate.com/ASPN ... g_character_classes

顶部
不容错过的IBM 集群技术资源汇总
 



当前时区 GMT+8, 现在时间是 2008-5-16 16:09

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.192100 second(s), 5 queries

清除 Cookies - 联系我们 - Linux伊甸园 - Archiver - WAP