Bagaimana untuk Mengekstrak Nilai Berganda daripada Rentetan Menggunakan Regex?

Mary-Kate Olsen
Lepaskan: 2024-10-21 12:42:31
asal
940 orang telah melayarinya

How to Extract Double Values from Strings Using Regex?

Pengeluaran Nilai Titik Terapung daripada Rentetan Menggunakan Regex

Soalan: Bagaimanakah regex boleh digunakan untuk mengasingkan nilai berganda daripada rentetan ?

Penyelesaian:

Untuk mengekstrak nilai berganda daripada rentetan menggunakan regex, regexp yang canggih boleh digunakan, seperti:

<code class="python">import re
re_float = re.compile("""(?x)
   ^
      [+-]?\ *      # first, match an optional sign *and space*
      (             # then match integers or f.p. mantissas:
          \d+       # start out with a ...
          (
              \.\d* # mantissa of the form a.b or a.
          )?        # ? takes care of integers of the form a
         |\.\d+     # mantissa of the form .b
      )
      ([eE][+-]?\d+)?  # finally, optionally match an exponent
   $""")</code>
Salin selepas log masuk

Corak ini sepadan dengan rentetan yang mewakili nombor titik terapung sama ada dalam tatatanda perpuluhan atau saintifik. Untuk mengeluarkan nombor daripada rentetan, cuma panggil re_float.match(string).

Contohnya:

<code class="python">m = re_float.match("4.5")
print(m.group(0))
# -> 4.5</code>
Salin selepas log masuk

Kod ini mencetak "4.5" ke konsol.

Pengeluaran Berbilang Nombor daripada Rentetan:

Untuk mengekstrak berbilang nombor daripada rentetan yang lebih besar, fungsi re.findall() boleh digunakan dengan corak regex yang sama:

<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))
# -> ['4.5', '-4.5', '- 4.5', '+ .1e10', ' 1.01e-2',
#     '       1.01', '-.2', ' 123', ' .123']</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Nilai Berganda daripada Rentetan Menggunakan Regex?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan