QA@IT

あるログを正規表現で表すとどうなるでしょうか

2638 PV

以下の2行の文字列を1つの正規表現で表すとどうなるでしょうか?
2行目の文字列には、1行目の"F"に相当する文字はありません

bash F user1 pts/0 0.00 secs Wed Sep 30 08:48
ls root __ 0.00 secs Wed Sep 30 08:49

回答

どこを抜き出したいとか、もう少し具体的にしたほうが答えやすいですね。
どちらにもマッチする正規表現だと ^.+$ でもマッチするので。

何で正規表現を使うかわかってたらそれも添えておくといいでしょうね。
awkとかviとかjavascriptとかテキストエディタとか。
物によって少々ちがいがあるので。

あとログが一般的なログであれば何のログかも記載した方が良いかと。
wコマンドっぽく見えるけどちょっと違うかな。

本題ですが含んでも含まなくてもマッチさせるなら例えば
^[^ ]+ (F )?.+$
の様に(F )?ないし( F)?を使えばあってもなくてもマッチします。

以下は javascriptで使う時の例。環境によっては\r\nは不要と思います。

http://regexr.com/3bt9f

qait9550.png

編集 履歴 (0)

見た目より判断するとこんな感じでしょうか?
2パターンから適当に判断しているので他の必要なパターンにマッチしないかもしれないしマッチしなくてもよいパターンにマッチするかもしれません。

(?<cmd>.+) (?<secs>\d+\.\d+) secs (?<week>.+) (?<month>.+) (?<day>\d\d) (?<hour>\d\d):(?<min>\d\d)
編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。