2

ダウンロード マネージャーからいくつかの結果を抽出しようとしています。形式は次のとおりです。

[#8760e4 4.3MiB/40MiB(10%) CN:2 DL:4.9MiB ETA:7s]

上記の例から抽出したいのは、次のような配列になります。

['4.3','MiB','40','MiB','10%','4.9','MiB','7','s']

私はsplitこれをさまざまな組み合わせで試しましたが、何も正しくないようです。これを行う方法を知っている人や、提案を提供できる人はいますか?

ありがとうございました!

4

3 に答える 3

1

別の正規表現を提案したいと思いますが、通常.*は良いことではありません.何らかの理由で入力の変更が黙って失敗し、間違った誤解を招く結果を返す場合. したがって、代わりに、すべてを一致させて、期待する形式であるかどうかを確認してください。

私の正規表現に従ってください。ただし、OPが要求したものとはわずかに異なる出力があります。

テスト文字列:[#8760e4 4.3MiB/40MiB(10%) CN:2 DL:4.9MiB ETA:7s]

/\[(#\w+) (\d+.?\d*\w+)/(\d+.?\d*\w+)\((\d+%)\) CN:(\d+) DL:(\d+.?\d*\w+) ETA:(\w+)\]/

ここに画像の説明を入力

分解された正規表現

regex part          matched part   captured part
-------------------------------------------------
\[                  [
(#\w+)              #8760e4        #8760e4
\s
(\d+.?\d*\w+)       4.3MiB         4.3MiB
/                   /
(\d+.?\d*\w+)       40MiB          40MiB
\((\d+%)\)          (10%)          10%
\s
CN:(\d+)            CN:2           2
\s
DL:(\d+.?\d*\w+)    DL:4.9MiB      4.9MiB
\s
ETA:(\w+)           ETA:7s         7s
\]                  ]

出力:

["#8760e4", "4.3MiB", "40MiB", "10%", "2", "4.9MiB", "7s"]
于 2013-10-24T16:43:18.287 に答える