私はPerlで次のような正規表現を持っています:
\s{2,}(?<name>(\S+\s)*\S+)\s{2,}
$+{name}
正規表現内の名前付きキャプチャの長さを確認する方法はありますか?
指定された最大長の値のみを一致させたい。
たとえば$+{name}
、最大 27 文字になりたいとします。
このケースはルックアラウンドを使用して実行できると思いますが、私はまだこの方法に慣れていません。
次に例を示します。
私はこのデータを持っています:
ROTINSON, JABON 0.000
CHUNG, TSONH-HIW 0.000
ROBINSONS, VISTOR R 0.000
表示される名前は ((\S+\s)*\S+) で一致します。可能であれば、正確に 27 文字を正規表現でキャッチする必要があります。これが列に必要な最大長だと思うからです。
表示される数値は異なる列にある必要があり、1 つの列に追加する必要がある値を正確に見つけたいなどです。このファイルは固定幅ファイルではないため、すべての値が正確に同じ数のスペースで区切られるわけではありません。いくつかの小さなバリエーションがあります。
今までこれを試合に使用していましたが、思ったように機能していません:
/^\s{0,8}(?P<name>(\S+\s){0,5}\S+)
\s{10,70}(?P<value>\d+\.\d+)
\s*$/xi