ホームページ >バックエンド開発 >Python チュートリアル >正規表現を使用して文字列から浮動小数点値を抽出するにはどうすればよいですか?

正規表現を使用して文字列から浮動小数点値を抽出するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-21 12:30:04357ブラウズ

How Can Regular Expressions Be Used to Extract Floating-Point Values from Strings?

正規表現を使用した文字列からの浮動小数点値の抽出

文字列から double 値を抽出するタスクを考えてみましょう。正規表現を使用してこれを実現するには、次の手順が必要です:

  1. 正規表現の構築:

    <code class="python">import re
    
    pattr = re.compile(???)
    x = pattr.match("4.5")</code>
  2. Perl 互換の正規表現を使用します:
    浮動小数点値を抽出するための Perl ドキュメントの適切な正規表現は次のとおりです:

    <code class="python">re_float = re.compile("""(?x)
    ^
       [+-]?\ *      # an optional sign and space
       (             # integers or f.p. mantissas
           \d+       # start with a ...
           (           # ? takes care of integers
               \.\d* # mantissa a.b or a.
           )?
          |\.\d+     # mantissa .b
       )
       ([eE][+-]?\d+)?  # optionally match an exponent
    $""")</code>
  3. 一致の検索と取得:
    double 値を抽出するには、コンパイルされた正規表現を目的の文字列に適用します:

    <code class="python">m = re_float.match("4.5")
    print(m.group(0))</code>

    これは出力します:

    4.5
  4. 文字列から複数の値を抽出する:
    より大きな文字列から複数の浮動小数点値を抽出するには、findall() メソッドを使用します:

    <code class="python">s = """4.5 abc -4.5 abc - 4.5 abc + .1e10 abc . abc 1.01e-2 abc 
        1.01e-.2 abc 123 abc .123"""
    print(re.findall(r"[+-]? *(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?", s))</code>

    これは以下を含む抽出された値のリストを返します:

    ['4.5', '-4.5', '- 4.5', '+ .1e10', ' 1.01e-2', '       1.01', '-.2', ' 123', ' .123']

以上が正規表現を使用して文字列から浮動小数点値を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。