正規表現による数値と小数の抽出列があり、各行の文字列から数値を抽出する必要があります。 数値は小数であってもそうでなくても構いません。
私は次の式を使用しています: Regex( :PIPE_LENGTH, "[^(\d+\.\d+)]", "", globalreplace )
例:
文字列: 長さ = 3.5インチ。ジョンによって完成されました。
期待値: 3.5
実測値:3.5..
例 2:
CEC用に完成しました。 パイプの深さ - 4.5" (MER)
期待値: 4.5
実際: .4.5()
余分なピリオドや括弧が入っているのはなぜですか? あと、冒頭の^がわかりにくいです。 これを削除すると、テキストのみが表示され、数字は表示されません。
ありがとう
Re: 正規表現による数値と小数の抽出ああ!
Text Explorer は数値にこのパターンを使用します
([\-\+]? ?[\.,]?[0-9][\.,0-9]*( ?e ?[\-\+]? ?\d+)?)
左から右に読んでいくと
- オプションの + または -
- オプションのスペース
- オプションのピリオドまたはカンマ
- 必須の数字
- 0 個以上のピリオド、カンマ、数字
- オプションの指数 (内部にオプションの断片を含む)
小数点と千の位の区切り記号の表現方法については国によって標準が異なるため、カンマとピリオドは交換可能です。 数値ではない奇妙な文字列がすり抜ける可能性があるため、num() 関数が欠損値を返す可能性があることを想定してコードを作成する必要があります。
Re: 正規表現による数値と小数の抽出私は別のケースを考えました。「マークは指を 0.5 インチ切り落とした。」 ハマった! このケースや他のケースでは正規表現を機能させることができません。 どちらかのケースのセットです。
先読みを使用すると...
Names Default to Here( 1 );
PIPE_LENGTH = "Length = 3.5\!". Completed by John.";
PIPE_LENGTH = "Completed for CEC. Pipe depth- 4.5\!" (MER)";
PIPE_LENGTH = "John cut 5\!"";
PIPE_LENGTH = "Mark cut .5\!" off his finger.";
Regex( PIPE_LENGTH, "\D*(?=\.)?(\d*\.?\d*)\D*", "\1" );
JMPパターンを使えばもっと楽になるのではないかと思います。
@Craige_Hales 、 どこにいるの???
Re: 正規表現による数値と小数の抽出完全。 私にとってつまずいた問題について迅速に助けてくれてありがとう。Re: 正規表現による数値と小数の抽出Regex( PIPE_LENGTH, "\D*(\d+\.?\d*)\D*", "\1" );
Re: 正規表現による数値と小数の抽出これの方が良い。 次のようなシナリオがあります。
ジョンカット5インチ
これには小数点はありません。 あなたの例では空白が返されます。
ありがとう
Re: 正規表現による数値と小数の抽出Looks [^(\d+\.\d+)] は、数字、小数点、句読点以外のすべてを選択します。これを「」に置き換えます。 残っているのは、数値の小数点と句読点 () です。 この式は期待どおりに動作しています。 あなたの例でもテストしましたが、同じ結果が得られました。
このようなものはうまくいきますか?
Regex( :PipeLength, "(\d+.\d+)", "\1" )
残りのデータがどのようになっているかはわかりませんが、この式は必要な数値と小数点だけを取り出しています。 どちらの例でも機能しました。