set watak
Baiklah, melalui contoh di atas, kami mempunyai pemahaman awal tentang ungkapan biasa Python Anda mungkin bertanya, apakah peraturan ungkapan biasa yang lain, dan apakah maksud huruf tersebut?
Sebenarnya, tidak perlu risau tentang perkara ini Senarai peraturan ungkapan biasa yang sepadan akan diberikan kemudian dalam bab ini, dan perkara ini boleh didapati dengan mudah di Google di Internet. Jadi sekarang, kita akan mendalami lagi pemahaman kita tentang ungkapan biasa dan bercakap tentang set watak ungkapan biasa.
Set watak ialah satu set aksara yang dikelilingi oleh sepasang kurungan segi empat sama "[]". Menggunakan set aksara, anda boleh memadankan satu daripada berbilang aksara.
Sebagai contoh, jika anda menggunakan C[ET]O untuk memadankan CEO atau CTO, maksudnya, [ET] mewakili E atau T. Seperti [a-z] yang dinyatakan di atas, ia adalah salah satu daripada semua huruf kecil Tanda sempang "-" digunakan di sini untuk mentakrifkan julat aksara bagi aksara berturut-turut. Sudah tentu, penulisan seperti ini boleh mengandungi berbilang julat aksara, seperti: [0-9a-fA-F], yang sepadan dengan nombor perenambelasan tunggal dan tidak sensitif huruf besar-besaran. Ambil perhatian bahawa susunan watak dan takrifan julat tidak mempunyai kesan pada hasil padanan.
Sebenarnya banyak yang saya katakan, saya cuma nak buktikan bahawa hubungan watak antara sepasang tanda kurung siku "[]" dalam set watak ialah satu atau perhubungan Dalam contoh, set aksara yang dinafikan digunakan, Iaitu, jika kurungan segi empat kiri "[" diikuti oleh kurungan sudut "^", set aksara akan terbalik. Satu perkara yang perlu diingat ialah set aksara yang dinafikan mesti sepadan dengan satu aksara. Contohnya: q[^u] tidak bermaksud: padankan q tanpa u mengikutinya. Ia bermaksud: padankan q diikuti dengan watak yang bukan u. Khususnya boleh difahami dengan membandingkan hasil keluaran dalam contoh di atas.
import re a = 'uav,ubv,ucv,uwv,uzv,ucv,uov' # 字符集 # 取 u 和 v 中间是 a 或 b 或 c 的字符 findall = re.findall('u[abc]v', a) print(findall) # 如果是连续的字母,数字可以使用 - 来代替 l = re.findall('u[a-c]v', a) print(l) # 取 u 和 v 中间不是 a 或 b 或 c 的字符 re_findall = re.findall('u[^abc]v', a) print(re_findall) 输出的结果: ['uav', 'ubv', 'ucv', 'ucv'] ['uav', 'ubv', 'ucv', 'ucv'] ['uwv', 'uzv', 'uov']Hasil keluaran:
import re a = 'uav_ubv_ucv_uwv_uzv_ucv_uov&123-456-789' # 概括字符集 # \d 相当于 [0-9] ,匹配所有数字字符 # \D 相当于 [^0-9] , 匹配所有非数字字符 findall1 = re.findall('\d', a) findall2 = re.findall('[0-9]', a) findall3 = re.findall('\D', a) findall4 = re.findall('[^0-9]', a) print(findall1) print(findall2) print(findall3) print(findall4) # \w 匹配包括下划线的任何单词字符,等价于 [A-Za-z0-9_] findall5 = re.findall('\w', a) findall6 = re.findall('[A-Za-z0-9_]', a) print(findall5) print(findall6)