私は次のような出力を持っています -
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」がありません。下位互換性を維持しながら、それに応じて正規表現を変更するにはどうすればよいですか。
編集:
表示される出力は完全な文字列であり、操作上の制限により、ここで正規表現以外の概念を使用して目的の値を取得することはできません。ここで分割を使用するのが理想的であることは知っていますが、できません。