◀一般トップへ
  • 8317 正規表現で指数表記から小数点表記にして取りだしできますか
    • 8318 Re:正規表現で指数表記から小数点表記にして取りだしできますか
      • 8320 Re2:正規表現で指数表記から小数点表記にして取りだしできますか
  • [8317] 正規表現で指数表記から小数点表記にして取りだしできますか ろろ 2018年03月17日 04:09

    指数表記 1.234E+2 4.321E+5
    ↓
    123.4 432100
    よろしくお願いします。
    • [8318] Re:正規表現で指数表記から小数点表記にして取りだしできますか berryzplus 2018年03月19日 01:25

      ▼ ろろさん
      > 指数表記 1.234E+2 4.321E+5
      > ↓
      > 123.4 432100
      > よろしくお願いします。

      sakuraの標準機能では不可能です。
      マクロでなら実現できるかも知れません。

      本家PERLの正規表現には/eオプションというのがあって、
      パターンマッチした文字列を置換する際に、
      置換文字列を式として扱う、という動作を指定できます。
      http://www.kent-web.com/perl/chap7.html

      PERLで書くと、こんな感じ。
      (-?[0-9]*\.(?:[0-9]*))[Ee]([\+\-][0-9]+)
      ↓
      $1 * ( 10 ** $2 )
       注: PERLの「**」はN乗を計算する演算子。

      RubyとかJavascriptとかでも理屈は同じです。
      Eの前と後を別々に取り出して乗算してやればよいです。
      • [8320] Re2:正規表現で指数表記から小数点表記にして取りだしできますか ろろ 2018年03月19日 22:27

        ▼ berryzplusさん
        ありがとうございます。
        > Eの前と後を別々に取り出して乗算してやればよいです。
        グループ化,gensubがわからなかったので,
        awkのsplitで対応しました。
        {
        split($2, a, "E");split($3, b, "E");
        print a[1] * ( 10 ** a[2] ) " " b[1] * ( 10 ** b[2] )
        }