Merangkum grup tangkapan, grup bernama, dan lookaround.
Tanda kurung (...) membuat grup tangkapan. Bagian yang cocok dapat dikeluarkan sebagai potongan tersendiri, atau digunakan ulang sebagai $1·$2 dalam ekspresi penggantian. Bila ingin membuat grup tetapi tidak ingin menangkap, gunakan (?:...) sebagai grup non-tangkapan.
(?<name>...) adalah grup tangkapan bernama. Karena dapat diakses dengan nama alih-alih nomor, keterbacaan makin baik saat pola makin panjang. Dalam penggantian dirujuk dengan $<name>.
Lookahead (?=...) mencocokkan posisi yang diikuti pola tertentu, dan (?!...) posisi yang tidak diikuti, tanpa mengonsumsi bagian itu. Lookbehind (?<=...) dan (?<!...) memeriksa bagian di depan dengan cara yang sama.
Inti lookaround adalah bahwa ia "syarat yang tidak dikonsumsi". Sangat kuat saat menumpuk beberapa syarat seperti pada pemeriksaan kata sandi kuat, atau saat ingin mengganti hanya dalam konteks tertentu.