কিছু রেগুলার এক্সপ্রেশন ইঞ্জিন ক্যারেক্টার ক্লাসের ভেতরে কিছু ফ্যান্সি অপারেশন অনুমতি দেয়। আমরা ক্যারেক্টার ম্যাচ করতে পারি যেগুলো একটি ক্লাসে আছে কিন্তু অন্যটিতে নেই (সাবট্রাকশন); যেগুলো দুটি ক্লাসে উভয়েই আছে (ইন্টারসেকশন), অথবা যেগুলো অনেক ক্লাসে যেকোনো একটিতে আছে (ইউনিয়ন)।
পাইথনের re মডিউল আমাদের && অপারেটর ব্যবহার করে ক্যারেক্টার ক্লাসের ভেতরে একাধিক ক্লাসের ইন্টারসেকশন স্পেসিফাই করার অনুমতি দেয়: [&&[...]] একটি ক্যারেক্টার ক্লাস স্পেসিফাই করে যা দুটি সাব-ক্লাসের ইন্টারসেকশন রিপ্রেজেন্ট করে—অর্থাৎ ক্লাস দ্বারা ম্যাচ করা ক্যারেক্টারটি দুটি সাব-ক্লাসের সদস্য হতে হবে। উদাহরণস্বরূপ, [\S&&[\D]] একটি ক্যারেক্টার স্পেসিফাই করে যা নন-হোয়াইটস্পেস ক্যারেক্টার এবং নন-ডিজিট দুটোই।
পাইথনের re মডিউলে ক্যারেক্টার ক্লাস সাবট্রাকশন
উদাহরণস্বরূপ, ক্লাস [a-z--[aeiou]] ইংরেজি লোয়ারকেস কনসোন্যান্ট ম্যাচ করে।
অতিরিক্তভাবে, যখন সাবট্রাক্টেড ক্লাসে রেঞ্জ নেই, তার ব্র্যাকেটস অপশনাল। উপরেরটিকে [a-z--aeiou]-ও লিখা যায়।
পাইথনের re মডিউলে ক্যারেক্টার ক্লাস ইউনিয়ন
পাইথনের re মডিউলে, একাধিক ক্যারেক্টার ক্লাসের ইউনিয়ন তৈরির জন্য || অপারেটর ব্যবহার করা হয়। উদাহরণস্বরূপ, [0||[^\W\d]] একটি ক্যারেক্টার স্পেসিফাই করে যা হয় 0 অথবা একটি ওয়ার্ড ক্যারেক্টার যা ডিজিট নয়।