Dalam artikel ini, kami akan meneroka soalan yang sering ditemui dalam pengaturcaraan: bagaimana untuk mengekstrak terapung berketepatan ganda -titik nombor daripada rentetan teks menggunakan modul Python semula untuk ungkapan biasa.
Untuk memadankan nilai titik terapung berketepatan berganda, kita boleh menggunakan ungkapan biasa yang menangkap tanda pilihan, bahagian kamiran atau pecahan, dan eksponen pilihan. Corak berikut ialah contoh daripada dokumentasi 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>
Untuk memadankan nilai ketepatan berganda dengan corak ini, kita boleh menggunakan kaedah padanan pada ungkapan biasa yang disusun objek:
<code class="python">m = re_float.match("4.5") print(m.group(0)) # prints 4.5</code>
Ini mengekstrak bahagian rentetan yang sepadan dengan corak, dalam kes ini, keseluruhan rentetan.
Jika kita mempunyai rentetan yang lebih besar yang mengandungi berbilang nilai ketepatan berganda, kita boleh menggunakan kaedah findall untuk mengekstrak semua nilai yang sepadan:
<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>
Corak ini sepadan dengan mana-mana nilai titik terapung ketepatan berganda, tanpa mengira ruang atau teks sekeliling dan mengekstraknya sebagai senarai rentetan.
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Nilai Titik Terapung Ketepatan Berganda daripada Rentetan dengan Regex?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!