带有日志头的正则表达式模式

标签 regex perl

我想将以下字符串与下面的正则表达式进行比较。它似乎不起作用。有什么建议吗?

要比较的字符串:“用户在remoteexec.log中搜索了“player”@ 02:21:31”

这是我的 Perl 代码。

my $qu_re = q{(.?) searched (.?) for "(.?)" @ (\d+):(\d+):(\d+)};

最佳答案

您缺少一些量词,+:

my $qu_re = q{(.+?) searched (.+?) for "(.+?)" @ (\d+):(\d+):(\d+)};
                ^              ^          ^

否则,它们将仅匹配 0 或 1 个字符。这应该适合您,但如果您问我,我宁愿使用更具限制性的东西:

my $qu_re = q{(\w+) searched (\w+\.log) for "(\w+)" @ (\d{2}):(\d{2}):(\d{2})};

这里,我假设 Userplayerremoteexec 可以是字母数字并包含下划线。 {2} 靠近 \d 表示只有 2 位数字。

关于带有日志头的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17500543/

相关文章:

perl - 为什么即使我从 Try::Tiny 的 finally block 返回一个值,也会收到 'use of uninitialized value' 警告?

Python 正则表达式 : how to extract inner data from regex

java - 在java正则表达式中,如何获取文件名的特定部分

java - 正则表达式匹配仅重复 2 位数字的数字

regex - 为什么 `word (.(?!another-word))*?`只匹配一个字符?

python - 用于检查是否在 2 个范围内找到 IP 的正则表达式

perl - 在 fork 里失去 child

perl - 如何使用 `\sort ...` ?

AWS 上 Redis 身份验证 token 的正则表达式

javascript - 正则表达式检查是否存在空格?