我想將下面的字符串與我的正則表達式進行比較。它似乎沒有工作。有什麼建議麼?使用日誌標題的正則表達式模式
字符串比較: 「用戶搜索remoteexec.log爲 」玩家「 @ 2時21分31秒」
這是我的Perl代碼。
my $qu_re = q{(.?) searched (.?) for "(.?)" @ (\d+):(\d+):(\d+)};
我想將下面的字符串與我的正則表達式進行比較。它似乎沒有工作。有什麼建議麼?使用日誌標題的正則表達式模式
字符串比較: 「用戶搜索remoteexec.log爲 」玩家「 @ 2時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})};
雖然這裏,我假設User
,player
和remoteexec
可以是字母數字和包含下劃線。 {2}
接近\d
表示只有2位數字。
非常感謝你! – user2202426
@ user2202426太棒了! :) – Jerry
這是一個例子:
use strict;
use warnings;
my $str = qq{User searched remoteexec.log for "player" @ 02:21:31};
my $qu_re = qr{(.+) searched (.+) for "([^"]+)" @ (\d+):(\d+):(\d+)};
if($str =~ m/$qu_re/) {
print "user: ", $1, "\n";
print "what: ", $2, "\n";
print "player: ", $3, "\n";
print "when: ", "$4:$5:$6" , "\n";
}
打印:
user: User
what: remoteexec.log
player: player
when: 02:21:31
你應該使用'qr'問詢正則表達式。你的問題也是什麼? – squiguy
你想匹配/捕獲哪些部分? – hwnd
@squiguy - 我的問題是如何將正則表達式與字符串進行比較。 – user2202426