多个模式匹配失败

时间:2011-11-28 07:20:22

标签: perl gsm

我有一个变量$ data,其中包含一堆数据;如果条件为真的变量中存在两个模式中的任何一个,我想要马赫,所以我写代码如

if ( $data =~ m/"Restore actions:"|"Setting Changes:"/)

我在else条件中放了一个print语句

不幸的是,即使这两个模式存在于变量中,它总是会转向其他。

下面是$ data变量包含的数据

sd: Save time:   Thu ...
sd: ...
sd: Restore actions:
sd: ...
sd: Setting Changes:
sd: ...

2 个答案:

答案 0 :(得分:3)

试试这样:

if ( $data =~ m/(Restore actions:|Setting Changes:)/)

答案 1 :(得分:3)

您添加的引号未出现在您要匹配的文字中。

if ( $data =~ /Restore actions:|Setting Changes:/ )

更精确

if ( $data =~ /^sd: (?:Restore actions|Setting Changes):/m )

会做的。