多个模式匹配失败

发布于 2024-12-18 16:30:00 字数 369 浏览 0 评论 0原文

我有一个变量 $data ,其中包含一堆数据;我想如果变量中存在的两个模式中的任何一个条件为 true 时进行处理,所以我编写如下代码

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

,并将 print 语句放在 else 条件中,

不幸的是它总是转到 else,即使变量中存在这两个模式。

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

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

I have a variable $data which contain a bunch of data; I want to mach if either of two pattern present in the variable the condition is true so i write the code like

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

and I put a print statement in the else condition

unfortunately its always going to the else even though these two patterns are present in the variable.

below is the data contain by the $data variable

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

野生奥特曼 2024-12-25 16:30:00

试试这样:

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

Try it like this:

if ( $data =~ m/(Restore actions:|Setting Changes:)/)
2024-12-25 16:30:00

您包含的引号未出现在您尝试匹配的文本中。

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

更精确的

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

就可以了。

You included quotes that don't appear in the text you are trying to match.

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

and the more precise

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

will do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文