本文將探討程式設計中常遇到的一個問題:如何擷取雙精確度浮點值使用正規表示式的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中文網其他相關文章!