【发布时间】:2016-05-28 21:01:16
【问题描述】:
在我的 Perl 脚本中,我想使用正则表达式进行条件搜索和替换:查找某个模式,如果该模式存在于哈希中,则将其替换为其他内容。
例如,我要搜索“pattern1”和“pattern2”的组合,如果后者存在于哈希中,则将组合替换为“pattern1”和“replacement”。我尝试了以下方法,但它根本没有做任何事情。
$_ =~ s/(pattern1)(pattern2)/$1replacement/gs if exists $my_hash{$2};
我也尝试过类似的东西:
$_ =~ s/(pattern1)(pattern2) && exists $my_hash{$2}/$1replacement/gs;
也什么都不做,好像没有找到匹配一样。
谁能帮我解决这个正则表达式问题?谢谢~
【问题讨论】:
-
怎么不工作,错误?什么都不做?
-
等一下...所以 patt2 应该存在于某个哈希值中,好的;但是 patt1 和 patt2 的组合应该存在......在某个字符串中?这是正确的吗?
-
@123 没有错误;它什么也不做。
-
@zdim 好吧,pattern2 确实存在于哈希中。 pattern1 与哈希没有任何关系;我使用这样的“组合”只是为了说明pattern2应该在特定的上下文中匹配。
-
OK ...然后寻找patt1-patt2组合,如果存在则替换为patt1-else?那是你要的吗?我发布了一个快速答案,请查看并告诉我。
标签: regex perl search replace conditional