cari

Rumah  >  Soal Jawab  >  teks badan

Masalah: ungkapan biasa MySQL (penghad tidak berfungsi)

Nota Mod: Jangan padam/jangan tutup Saya bertanya soalan ini sebelum ini dan pentadbir menutupnya kerana mereka fikir ia sama dengan soalan pengguna lain. Saya melihat pada utas yang mereka cadangkan kepada saya dan ia tidak mengandungi jenis isu berangka yang saya hadapi. Bagaimanakah urutan ini sepadan dengan keseluruhan rentetan dengan regex?


Soalan/soalan saya: REGEXP mengembalikan positif palsu.

SELECT '123456' REGEXP '[0-9]{1,4}' AS Test;

Menurut bacaan saya, bahagian pendakap kerinting {1,4} bermakna ia muncul sekurang-kurangnya 1 kali dan paling banyak 4 kali. Tetapi daripada perkara di atas, julat [0-9] muncul lebih kerap daripada 4, tetapi pertanyaan mengembalikan 1 dan bukannya 0. Saya telah melampirkan tangkapan skrin. Apa yang saya hilang? Terima kasih.

Tangkapan skrin contoh dalam Workbench

P粉684720851P粉684720851266 hari yang lalu433

membalas semua(1)saya akan balas

  • P粉242535777

    P粉2425357772024-04-03 00:54:29

    SELECT '123456' REGEXP '^[0-9]{1,4}$' AS Test;

    Dengan "berlabuh" anda meminta untuk memadankan keseluruhan rentetan. Operasi di atas akan gagal kerana had 4.

    SELECT '123456' REGEXP '^[0-9]{1,}$' AS Test;

    Lulus kerana membenarkan sekurang-kurangnya digit.

    SELECT 'zzz123456' REGEXP '^[0-9]{1,}$' AS Test; -- Fail
    SELECT '123456' REGEXP '^[0-9]*$' AS Test;  -- pass
    SELECT '' REGEXP '^[0-9]{1,}$' AS Test;  -- fail (too short)
    SELECT '' REGEXP '^[0-9]+$' AS Test;  -- same as {1,}
    SELECT 'abc123456def' REGEXP '[0-9]{1,4}' AS Test; -- pass (no anchor)
    SELECT 'abc123456def' REGEXP '^[^0-9]+[0-9]{1,4}[^0-9]+$' AS Test;  -- fail
    SELECT 'abc123456def' REGEXP '[^0-9]*[0-9]+[^0-9]*' AS Test;  -- pass

    Dua yang terakhir termasuk [^0-9], yang bermaksud "apa-apa nombor kecuali 0-9.

    Arahan terperinci^

    • Pada permulaan dalam ungkapan biasa, ^ 将处理“锚定”在开头: REGEXP "^x" 表示“以 x 开头”;如果“x”位于字符串中的任意位置,则 REGEXP "x" berjaya.
    • Pada permulaan "charset", ^ 表示“不”: REGEXP "x[0-9]" 查找 x 后紧跟一个数字' REGEXP "x[^0-9]" cari x bukan nombor serta-merta mengikutinya.

    balas
    0
  • Batalbalas