Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Ungkapan Biasa Boleh Digunakan untuk Mengekstrak Nilai Titik Terapung daripada Rentetan?

Bagaimanakah Ungkapan Biasa Boleh Digunakan untuk Mengekstrak Nilai Titik Terapung daripada Rentetan?

DDD
DDDasal
2024-10-21 12:30:04252semak imbas

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

Mengekstrak Nilai Titik Terapung daripada Rentetan dengan Ungkapan Biasa

Pertimbangkan tugas mengekstrak nilai berganda daripada rentetan. Untuk mencapai ini menggunakan ungkapan biasa, langkah berikut terlibat:

  1. Bina Regexp:

    <code class="python">import re
    
    pattr = re.compile(???)
    x = pattr.match("4.5")</code>
  2. Gunakan Ungkapan Biasa Serasi Perl:
    eksp semula yang sesuai daripada dokumentasi Perl untuk mengekstrak nilai titik terapung ialah:

    <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. Cari dan Dapatkan Padanan:
    Untuk mengekstrak nilai berganda, gunakan regexp terkumpul pada rentetan yang dikehendaki:

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

    Ini akan menghasilkan:

    4.5
  4. Ekstrak Berbilang Nilai daripada Rentetan:
    Untuk mengekstrak berbilang nilai titik terapung daripada rentetan yang lebih besar, gunakan kaedah 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>

    Ini akan kembalikan senarai nilai yang diekstrak, termasuk:

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

Atas ialah kandungan terperinci Bagaimanakah Ungkapan Biasa Boleh Digunakan untuk Mengekstrak Nilai Titik Terapung daripada Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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