অ্যালটারনেশন এবং এর অ্যাপ্লিকেশন
রিয়েল ওয়ার্ল্ড অ্যাপ্লিকেশনে আমরা প্রায়ই এমন রেগুলার এক্সপ্রেশন ব্যবহার করি যা দুটি বা ততোধিক অ্যালটারনেটিভের যেকোনো একটি ম্যাচ করে। ayrıca, আমরা কখনো কখনো কোয়ান্টিফায়ার একাধিক এক্সপ্রেশনে প্রয়োগ করতে চাই। এই সব লক্ষ্য প্যারেনথেসিস দিয়ে গ্রুপিং করে এবং ভার্টিক্যাল বার (|) দিয়ে অ্যালটারনেশন প্রয়োগ করে অর্জন করা যায়।
ভার্টিক্যাল বার (|) এর ব্যবহার
অ্যালটারনেশন তখন কাজে আসে যখন আমাদের কাছে বেশ কিছু অ্যালটারনেটিভের যেকোনো একটি ম্যাচ করার প্রয়োজন হয়। উদাহরণস্বরূপ, রেজেক্স airways|airplane|bomber যেকোনো টেক্সট ম্যাচ করবে যাতে airways বা airplane বা bomber থাকে। একই কাজ air(ways|plane)|bomber রেজেক্স দিয়েও করা যায়।
যদি আমরা রেজেক্স (airways|airplane|bomber) ব্যবহার করি, তবে সেটা তিন এক্সপ্রেশনের যেকোনো একটি ম্যাচ করবে। রেজেক্স (air(ways|plane)|bomber) বিবেচনা করুন, যেটিতে দুটি ক্যাপচার থাকবে যদি প্রথম এক্সপ্রেশন ম্যাচ করে (airways বা airplane প্রথম ক্যাপচার হিসেবে এবং ways বা plane দ্বিতীয় ক্যাপচার হিসেবে), এবং একটIK ক্যাপচার থাকবে যদি দ্বিতীয় এক্সপ্রেশন ম্যাচ করে (bomber)। আমরা ক্যাপচারিং ইফেক্ট বন্ধ করতে করতে পারেন ওপেনিং প্যারেনথেসিসের পরে ?: যোগ করে:
(air(?:ways|plane)|bomber)
এটি ম্যাচ করলে শুধু একটি ক্যাপচার থাকবে (airways বা airplane বা bomber)।
উদাহরণ
নিচের কোড উপরের পয়েন্টগুলো ইলাস্ট্রেট করে:
import re s = 'airways aircraft airplane bomber' result = re.findall(r'(airways|airplane|bomber)', s) print(result) result2 = re.findall(r'(air(ways|plane)|bomber)', s) print(result2) result3 = re.findall(r'(air(?:ways|plane)|bomber)', s) print(result3)
আউটপুট
এটি নিচের আউটপুট দেবে:
['airways', 'airplane', 'bomber']
[('airways', 'ways'), ('airplane', 'plane'), ('bomber', '')]
['airways', 'airplane', 'bomber']