こんにちは。
Service:\s+([a-z0-9-]+\s+([^)]+))
でキャプチャできると思います。
以下は ruby によるサンプルです。
ruby
1logs = <<EOS
2Service: telnet (tcp/23) (FINAL_REJECT:) - 1 packet
3Service: d2k-tapestry2 (tcp/3394) (FINAL_REJECT:) - 1 packet
4EOS
5
6logs.each_line do |line|
7 if /Service:\s+([a-z0-9-]+\s+([^)]+))/ =~ line
8 puts $1
9 end
10end
上記を実行すると、以下のように出力されます。
telnet (tcp/23)
d2k-tapestry2 (tcp/3394)
参考になれば幸いです。
追記
正規表現を使うというお題なので、わき道にそれて恐縮ですが、
もしお使いの環境がUNIX系OSでしたら、
cut というコマンドを使うと、正規表現を使わず、プログラムも書かず、
一行のコマンドで出来ます。
以下のログがテキストファイル、logs.txt
に入っているとします。
Service: telnet (tcp/23) (FINAL_REJECT:) - 1 packet
Service: d2k-tapestry2 (tcp/3394) (FINAL_REJECT:) - 1 packet
各行の文字列の区切りは、半角スペースであるとしますと、
以下のように cut を使えば結果が得られます。
$ cut -f 2,3 -d ' ' logs.txt
telnet (tcp/23)
d2k-tapestry2 (tcp/3394)