Javascript匹配线条后的图案和线条

时间:2016-06-17 11:16:22

标签: javascript regex string match

我试图在Unix中实现类似于pcregrep -A1的功能,或者在Linux中实现类似于pcregrep -A1的功能,它找到与您的模式匹配的行以及它之后的下一行。

例如,我们说我们有这样的文字:

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相匹配,但我不知道如何获得该线后......

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

不漂亮,但有效:

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

See it here at regex101

请注意!如果您需要捕获匹配项,请添加括号:

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

编辑:已更改为允许可选的初始空格。