Kurungan Tidak Menangkap dalam Regex Python
Kurungan ( ) melakukan dua fungsi -
pengelompokan aksara dan fungsi tangkapan.
Apa yang perlu dilakukan jika anda perlu mengelompokkan,
tetapi tidak mahu memasukkan ke dalam tangkapan? Untuk menyelesaikan masalah ini,
kurungan tidak menangkap khas (?: ) telah dicipta - mereka mengelompokkan,
tetapi tidak memasukkan ke dalam tangkapan.
Contoh
Dalam contoh berikut, kurungan pertama diperlukan untuk pengelompokan, dan yang kedua - untuk tangkapan. Walau bagaimanapun, kedua-dua kurungan menyimpan data ke dalam tangkapan:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Hasilnya, dalam tangkapan kami akan terdapat yang berikut:
print(res[0]) # akan output 'abab123'
print(res[1]) # akan output 'ab'
print(res[2]) # akan output '123'
Contoh
Mari kita buat supaya pasangan kurungan pertama hanya mengelompokkan, tetapi tidak memasukkan ke dalam tangkapan:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Hasilnya, dalam tangkapan pertama akan terdapat nombor kami:
print(res[1]) # akan output '123'