সমস্যা
একটি স্ট্রিংকে ফিল্ডে ভাগ করতে হলে কিন্তু ডিলিমিটার (সিমা চিহ্ন) সমস্ত জায়গায় একসমান নয়।
সমাধান: re.split()
সাধারণ split() মেথড সিম্পল কেসের জন্য উপযুক্ত, কিন্তু re.split() রেগুলার এক্সপ্রেশন ব্যবহার করে একাধিক প্যাটার্ন হ্যান্ডেল করতে পারে।
উদাহরণ ১: শুধু টেক্সট বের করা (ডিলিমিটার ছাড়া)
import re tennis_greats = 'Roger-federer, Rafael nadal, Novak Djokovic,Andy murray' # ডিলিমিটার: হাইফন(-), কমা(,), হোয়াইটস্পেস(\s) players = re.split(r'[-,\s]\s*', tennis_greats) print(players) # ['Roger', 'federer', 'Rafael', 'nadal', 'Novak', 'Djokovic', 'Andy', 'murray']
উদাহরণ ২: ডিলিমিটারসহ টেক্সট বের করা
রেগুলার এক্সপ্রেশনে ক্যাপচারিং গ্রুপ (পারেনথেসিস) ব্যবহার করলে ডিলিমিটারও আউটপুটে আসবে।
players = re.split(r'(-|,|\s)\s*', tennis_greats) print(players) # ['Roger', '-', 'federer', ',', 'Rafael', ' ', 'nadal', ',', 'Novak', ' ', 'Djokovic', ',', 'Andy', ' ', 'murray']
| (পাইপ) চিহ্ন ব্যবহার করে একাধিক ডিলিমিটার প্যাটার্ন স্পেসিফাই করা হয়। \s* দিয়ে traiлиং হোয়াইটস্পেস হ্যান্ডেল করা হয়েছে।