2

奇妙なエンコーディングは気にしないでください。

(このような表では、OF DAMAGE STABILITY で始まり、「フラッディング パーセンテージ」行で終わります)、ある値(0.018 など)より小さい最後の列の数値のみを一致させる方法はありますか?

私は正規表現を練習していますが、これはこの段階では多すぎます。だから、誰かがそれを行うための最善の方法を少なくとも推奨してくれることを望んでいました.

                    SUMMARY OF RESULTS OF DAMAGE STABILITY                      
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
       DAMAGE CASE               %  R  HEEL   GM     FBmin   GZ>0  GZmax  Area  
                                      (deg)   (m)     (m)   (deg)   (m)  (m.rad)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 109.10s                        100 1  -4.1   0.438   1.243  59.2  0.133  0.021 
                                 20 1  -6.6   0.740   2.215  63.4  0.479  0.049 
                                 40 1  -5.8   0.721   2.372  64.2  0.393  0.045 
                                 60 1  -3.2   0.728   2.537  66.8  0.277  0.041 
                                 80 1  -0.8   0.721   2.354  66.8  0.192  0.037 

 109.10p                        100 1  -4.1   0.438   1.243  59.2  0.133  0.021 
                                 20 1   4.5   0.688   2.494  65.5  0.507  0.049 
                                 40 1   3.7   0.684   2.580  66.3  0.417  0.046 
                                 60 1   1.1   0.720   2.599  68.9  0.300  0.043 
                                 80 1  -1.2   0.693   2.350  65.2  0.177  0.035 


 110.10s                        100 1  -3.0   0.748   1.837  39.7  0.494  0.049 
                                 20 1  -2.9   0.777   2.333  43.1  0.594  0.052 
                                 40 1  -2.9   0.777   2.333  42.5  0.576  0.052 
                                 60 1  -2.9   0.756   2.294  41.6  0.551  0.050 
                                 80 1  -2.9   0.748   2.077  40.7  0.520  0.049 

 110.10p                        100 1  -0.5   0.733   2.143  41.6  0.484  0.047 
                                 20 1  -0.5   0.763   2.627  45.3  0.613  0.051 
                                 40 1  -0.5   0.763   2.627  44.7  0.592  0.051 
                                 60 1  -0.5   0.740   2.593  43.8  0.558  0.049 
                                 80 1  -0.5   0.767   2.372  42.7  0.516  0.048 


 %     : Flooding percentage.                                                   
 R     : R=1 if run-off weights considered, R=0 if no run-off.                  
 HEEL  : Heel at equilibrium (negative if equilibrium is on port).              
 GM    : GM at equilibrium.                                                     
 FBmin : Minimum distance of margin line, weathertight or non-weathertight      
         points from waterline.                                                 
 GZ>0  : Range of positive GZ limited to immersion of non-weathertight openings.
 GZmax : Maximum GZ value.                              
4

3 に答える 3

2

浮動小数点数で特定の数値範囲をアサートする正規表現を考え出すことは、実際には非常に複雑です。

Vim の使用を主張する場合 (これはテキスト エディターであり、構造化された列ベースの情報のフィルタリングはスプレッドシートに適していることを思い出してください)、かなり緩和された正規表現を使用して、すべての数字の「候補」に一致させ、正確に実行することができます。replace-expressionの数値範囲アサーション。/通常の検索を使用することはできません。使用する必要があります:substitute(たとえば、no-op 置換、または達成したい処理を使用して) を使用します:help sub-replace-expression

:%substitute/[+-]\?\d\+\.\d\+$/\=str2float(submatch(0)) < 0.018 ? 'match' : submatch(0)/
于 2013-05-15T08:45:37.693 に答える
0

次のようなことができます:

/0.0\(2[0-1]\|[0-1][0-9]\)$

$行末アンカーです。グループ化の最初の部分は 20 と 21 に一致するため、0.021 がこれが一致する最大数です。後の代替\|は、00 から 19 までのすべてに一致します。したがって、この正規表現は、0.021 から 0.000 の間の行の最後の数字に一致します。

ご覧のとおり、数値を文字列と見なし、ASCII 順序を使用する必要があるため、数値の比較は正規表現では少し面倒です。

于 2013-05-15T08:45:24.680 に答える