Rumah > Soal Jawab > teks badan
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粉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^
^
将处理“锚定”在开头: REGEXP "^x"
表示“以 x 开头”;如果“x”位于字符串中的任意位置,则 REGEXP "x"
berjaya. ^
表示“不”: REGEXP "x[0-9]"
查找 x 后紧跟一个数字' REGEXP "x[^0-9]"
cari x bukan nombor serta-merta mengikutinya.