私の友人は、私が使用している正規表現が長すぎる場合、おそらくその仕事には不適切なツールだと言いました。このテキストを解析するためのより良い方法について何か考えはありますか? すべてを配列に返す正規表現がありますが、簡単にチャンクアウトできますが、別のより簡単な方法があれば、それを見たいと思います。
外観は次のとおりです。
2 AB 123A 01JAN M ABCDEF AA1 100A 200A 02JAN T /ABCD /E
その内訳は次のとおりです。
2
は行番号で、これらの範囲は から1
まで99
です。書式設定のために表示できない場合は、10 未満の数字の先頭にスペース文字があります。スペースは、
*
AB
データの重要な単位 (UOD) です。AB
/CD
別の重要な UOD であるが先頭に追加される場合があります。123
重要な UOD です。1
(先頭に 4 つのスペースを追加)から99999
.A
重要な UOD です。01JAN
日/月の組み合わせなので、両方の UOD を抽出する必要があります。M
曜日名の短縮形です。これは ~ の間の数値である可能性が1
あり7
ます。ABC
重要な UOD です。DEF
重要な UOD です。後のスペース
DEF
は*
AA1
0 文字の場合もあれば、5 文字の場合もあります。重要ではありません。100A
はタイムスタンプですが、形式は1300
. 時刻は、時刻または午後の時刻のA
場合があります。N
1200
P
次に、別のタイムスタンプが表示されます。
次の日付部分が存在しない可能性があります。たとえば、これは有効です。
93*DE/QQ51234 30APR J QWERTY*QQ0 1250 0520 /ABCD*ASDFAS /E
表示されるデータ
/ABCD*ASDFAS /E
はアプリケーションとは関係ありませんが、ここに 2 番目の日付スタンプが表示される場合があります。フロントスラッシュは別のもの (文字など) の場合があります。
注:
スペースで区切られていません。体の一部が他の部分にぶつかっています。文字位置は、リストの最初の 2 つまたは 3 つの項目についてのみ正確です
何も省略したとは思いませんが、正規表現を書くよりもこのような文字列を解析する簡単な方法があれば教えてください。