2016-06-17 4 views
0

Unixではpcregrep -A1、Linuxではgrep -A1と同様の機能を実装しようとしていますが、パターンとその次の行に一致する行が見つかります。パターンとラインのJavascriptマッチライン

例えば、我々は、このテキストを持っているとしましょう:

5000a72b30085ad3 0x4865 22 6 Gb/s SAS Yes No No No No 
0 T/D 0 0 0x0 Path: pp0d.20.16 
    DISCOVER response: fffff602aa508550::print smp_discover_resp_t 
5000a72b30085af7 0x4866 23 6 Gb/s SAS Yes No No No No 
0 T/D 0 0 0x0 Path: pp0d.20.17 
    DISCOVER response: fffff602aa508738::print smp_discover_resp_t 
0000000000000000 N/A 24 N/A None No No No No No 
    0 T/D 0 0 0x0 Path: pp0d.20.18 
0000000000000000 N/A 25 N/A None No No No No No 

私はそれが有効なWWN(ない0000000000000000)を持っているすべてのそれらの行を見つけたいとN/Aを持っている、とも戻りません。その後の線右:

5000a72b30085ad3 0x4865 22 6 Gb/s SAS Yes No No No No 
    0 T/D 0 0 0x0 Path: pp0d.20.16  
5000a72b30085af7 0x4866 23 6 Gb/s SAS Yes No No No No 
0 T/D 0 0 0x0 Path: pp0d.20.17 

...事前に

おかげで、私は正しいWWNを持つ行にマッチするよう、これまで得ることができますが、私は後の行を取得する方法がわかりませんあなたの助けに!

+0

grepのようなものをjavascriptで使用したい場合は、grepとしてタグ付けする必要はありません。そのタグを削除する。 – fedorqui

+0

"有効なWWN"とは何ですか?私は "N/Aを持っていない"から集めることができると思いますが、私には簡単にしてください... – ClasG

+0

@ClasG私は詳細を追加しました。私は行をgrepする方法を知っている、私は後に行をキャッチする方法を知らない。 – Cristina

答えて

2

美しくはないが、動作します:

^\s*(?!0{16})\w{16}\s(?:.(?!N\/A))*$\n.* 

See it here at regex101

注!

^\s(?!0{16})(\w{16}\s(?:.(?!N\/A))*$\n.*) 

編集:オプションの初期スペースを可能にするように変更しますが、試合をキャプチャする必要がある場合は、括弧を追加します。

+0

レンジ・メタ・シーケンスではなく、16個の0を書き込む理由は何ですか? '0 {16} '? – andlrc

+0

私はちょうど新しい行に対してそれをテストしたが動作しませんでした。https://regex101.com/r/lZ7oN4/2を参照してください。 – Cristina

+0

@andlrc絶対にそうではありません:Pちょうどコピーして貼り付けました** **それらを数えなければなりません:D LAZY! – ClasG

関連する問題