Regular Expressions (re module)
re module regex patterns ke saath text search/match/replace karta hai. Common functions: re.search() (pattern kahi bhi milta hai to match object deta hai), re.match() (sirf string ke shuru mein check karta hai), re.findall() (SAARE matches ek list mein), re.sub() (replace karta hai).
Basic pattern syntax: \d (digit), \w (word character), \s (whitespace), + (ek ya zyada), * (zero ya zyada), ? (optional). [] character class define karta hai, () groups banata hai.
import re
text = "Contact: aarav@example.com or call 9876543210"
# Email dhundo:
email = re.search(r"[\w.]+@[\w.]+", text)
print(email.group()) # "aarav@example.com"
# Sab numbers dhundo:
numbers = re.findall(r"\d+", text)
print(numbers) # ['9876543210']
# Replace karo:
masked = re.sub(r"\d{10}", "XXXXXXXXXX", text)
print(masked) # phone number masked ho gaya
# Validation:
is_valid_email = re.match(r"^[\w.]+@[\w.]+\.\w+$", "test@example.com")
print(bool(is_valid_email)) # True- re.search/match/findall/sub — pattern matching operations
- \d, \w, \s = digit/word/whitespace; +, *, ? = quantifiers
- Email/phone validation, text extraction mein bahut common
Regex groups ((...)) se parts extract kar sakte ho, lekin unhe naam bhi de sakte ho (?P<name>...) se — extracted data ko index (group(1)) ke bajaye naam se access karna zyada readable hai.
import re
text = "Date: 2026-07-28"
match = re.search(r"(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", text)
print(match.group("year")) # "2026"
print(match.group("month")) # "07"
print(match.groupdict()) # {'year': '2026', 'month': '07', 'day': '28'}Agar same pattern baar-baar use karna hai (jaise loop ke andar), re.compile() se pehle compile kar lo — ye pattern ko ek reusable object bana deta hai, repeated matching thoda fast hoti hai.
import re
pattern = re.compile(r"\d+") # ek baar compile karo
for text in ["abc 123", "def 456", "ghi 789"]:
match = pattern.search(text) # reuse — recompile nahi hota har baar
print(match.group())