我有一个像 -
Col.A Col.B Col.C Col.D
--------------------------------------------------------------
* 1 S60-01-GE-44T-AC SGFM115001195 7520051202 A
1 S60-PWR-AC APFM115101302 7520047802 A
1 S60-PWR-AC APFM115101245 7520047802 A
或者
Col.A Col.B Col.C Col.D
--------------------------------------------------------------
* 0 S50-01-GE-48T-AC DL252040175 7590005605 B
0 S50-PWR-AC N/A N/A N/A
0 S50-FAN N/A N/A N/A
对于这些输出,正则表达式 -
(?:\*)?\s+(?<unitno>\d+)\s+\S+-\d+-(?:GE|TE)?-?(?:\d+(?:F|T))-?(?:(?:AC)|V)?\s+(?<serial>\S+)\s+\S+\s+\S+\s+\n
可以很好地捕获 A 列和 B 列。但最近我得到了一种新的输出 -
Col.A Col.B Col.C Col.D
---------------------------------------------------------
* 0 S4810-01-64F HADL120620060 7590009602 A
0 S4810-PWR-AC H6DL120620060 7590008502 A
0 S4810-FAN N/A N/A N/A
0 S4810-FAN N/A N/A N/A
如您所见,这些输出中缺少模式“GE|TE”和“AC|V” 。如何相应地更改我的正则表达式以保持向后兼容性。
编辑:
您看到的输出是一个完整的字符串,并且由于一些操作限制,我不能在这里使用除正则表达式之外的任何其他概念来获得我想要的值。我知道在这里使用 split 是理想的,但我不能。