ポートスキャンツールnmapコマンドの結果から正規表現で、ある行を抽出したいのですが、それがうまくいきません。
使用言語はc言語で、regex.hというc言語の正規表現ライブラリを使用しています。
例えばポートスキャンをして、以下の結果が出たとします。
Starting Nmap 6.40 ( http://nmap.org ) at 2016-01-01 12:00 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000080s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 2.44 seconds
そこから[22/tcp open ssh〜80/tcp open http]という部分を抽出したいのですが、それがうまくいきません。
正規表現パターンが以下です。
(\d+)?\/(tcp|udp).+(open|closed|filtered).+
patternMatch[i].rm_soにマッチした最初の文字の位置が入るのですが、これの最初の文字の位置が[22/tcp open ssh]の[/]が最初の位置として入ってしまいます。
patternMatch[i].rm_eoに最後の文字の位置が入るのですが、これも[Nmap done: 1 IP address (1 host up) scanned in 2.44 seconds]の[seconds]の中の最後の[s]が入ってしまいます。
(ちなみにpatternMathはchar型配列の変数です)
正規表現のパターンが間違っていると思うのですが、正規表現の勉強を初めてまだ浅くかなりいろいろ試しているのですが、うまくいきません。
[22/tcp open ssh〜80/tcp open http]が抽出できる正規表現のパターンを教えて頂けないでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/04 10:39
2016/01/04 13:28 編集