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:

pythontxt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)

Hasilnya, dalam tangkapan kami akan terdapat yang berikut:

pythonprint(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:

pythontxt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)

Hasilnya, dalam tangkapan pertama akan terdapat nombor kami:

pythonprint(res[1]) # akan output '123'