首頁 >後端開發 >Python教學 >如何使用正規表示式從字串中提取雙精度浮點值?

如何使用正規表示式從字串中提取雙精度浮點值?

DDD
DDD原創
2024-10-21 12:13:33987瀏覽

How to Extract Double Precision Floating-Point Values from Strings with Regex?

使用正規表示式從字串中擷取雙精確度浮點值

本文將探討程式設計中常遇到的一個問題:如何擷取雙精確度浮點值使用正規表示式的Python re 模組從文字字串中取得數字。

雙精確度的正規表示式模式

要匹配雙精確度浮點值,我們可以使用捕獲的正規表示式可選符號、整數或小數部分以及可選指數。以下模式是Perl 文件中的範例:

<code class="python">re_float = re.compile("""(?x)
   ^
      [+-]?\ *      # optional sign and space
      (             # integer or fractional mantissa:
          \d+       # start out with digits...
          (
              \.\d* # mantissa of the form a.b or a.
          )?        # ? for integers of the form a
         |\.\d+     # mantissa of the form .b
      )
      ([eE][+-]?\d+)?  # optional exponent
   $""")</code>

匹配和提取

要將雙精度值與此模式匹配,我們可以在已編譯的正規表示式上使用match 方法object:

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

這會擷取字串中與模式相符的部分,在本例中為整個字串。

提取多個值

如果我們有一個包含多個雙精度值的較大字串,我們可以使用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))
# prints ['4.5', '-4.5', '- 4.5', '+ .1e10', ' 1.01e-2',
#     '       1.01', '-.2', ' 123', ' .123']</code>

此模式匹配任何雙精度浮點值,無論空格或周圍文字如何,並將其提取作為字串列表。

以上是如何使用正規表示式從字串中提取雙精度浮點值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn