Regular Expressions (Regex)
Text search ka superpower � ek pattern se hazaaron lines mein se matching text mil jaata hai.
Regex (Regular Expressions) ek powerful tool hai jo text mein patterns dhundhta hai. Email validation, phone number extraction, data cleaning � sab jagah regex use hota hai. Ek chhota sa pattern likho aur poore text se matching parts mil jaayenge.
WHY: Regex kyun zaroori hai
Manually text dhundhna boring aur error-prone hai. Regex se ek line mein hazaaron rows mein se specific data nikal sakte ho. Data analysis mein dirty text ko clean karne ke liye regex sabse useful hai.
\d digits, \w word characters, . any character � yeh basic building blocks hain.
+ one or more, * zero or more, {n} exactly n times � pattern kitni baar match hoga.
findall(), sub(), search(), match() � alag kaam ke alag functions.
HOW: basic regex patterns
Python mein re module use hota hai regex ke liye. Sabse pehle import karo, phir patterns likho.
import re
# Find all numbers
text = "Order #1234 placed on 01/01/2026"
numbers = re.findall(r'\d+', text)
print(numbers) # ['1234', '01', '01', '2026']
# Email pattern
email = "Contact: aman@email.com"
match = re.search(r'[\w.]+@[\w.]+', email)
if match:
print(match.group()) # aman@email.com
# Replace
cleaned = re.sub(r'\d', '*', "Phone: 9876543210")
print(cleaned) # Phone: **********
# Validate
pattern = r'^\d{10}$'
print(bool(re.match(pattern, "9876543210"))) # Truere.findall() sabse useful hai � ek pattern likho aur saara matching data mil jaayega.Common regex patterns
Regex mein har character ka ek special meaning hota hai. In patterns ko yaad karo � maximum kaam yehi cover karte hain:
import re
text = "Email: test@abc.com, Phone: 9876543210, Date: 01-01-2026"
# \d = digit, \w = word char, . = any char
print(re.findall(r'\d+', text)) # ['9876543210', '01', '01', '2026']
print(re.findall(r'\w+@\w+\.\w+', text)) # ['test@abc.com']
# + = one or more, * = zero or more
print(re.findall(r'\d+', "12 3 456")) # ['12', '3', '456']
# {n} = exactly n times
print(re.findall(r'\d{4}', "2026 123 4567")) # ['2026', '4567']
# [] = character set
print(re.findall(r'[aeiou]', "hello")) # ['e', 'o']
# ^ = start, $ = end
print(bool(re.match(r'^\d+$', "12345"))) # TrueWHEN: alag functions ka use
Har function ka apna kaam hai � kuch pehla match dhoondhta hai, kuch saare matches, kuch replace karta hai.
re.findall()� Saare matches return karta hai list meinre.search()� Pehla match return karta hai (Match object)re.match()� String ke start se match check karta haire.sub()� Pattern ko replace karta hai
import re
text = "apple banana cherry apple date apple"
# findall - saare matches
print(re.findall(r'apple', text)) # ['apple', 'apple', 'apple']
# search - pehla match
match = re.search(r'banana', text)
if match:
print(match.group()) # banana
print(match.start()) # 6
# match - sirf start se check
print(bool(re.match(r'apple', text))) # True
print(bool(re.match(r'banana', text))) # False
# sub - replace
result = re.sub(r'apple', 'mango', text)
print(result) # mango banana cherry mango date mangoWHERE: real-world use cases
Data science aur web scraping mein regex daily use hota hai:
- User input validate karna (email, phone, password)
- Logs se error messages extract karna
- CSV ya text files se structured data nikalna
- Web pages se URLs, dates ya prices dhundhna
- Dirty text data ko clean karna
Quick check
Regex pattern likho jo 10-digit Indian phone number match kare.
^ se start aur $ se end define karo. \d{10} se exactly 10 digits match honge.
Common mistakes
- Raw string (
r'...') na use karna � backslash escape ho jaata hai. re.match()sirf start se check karta hai, poora string nahi.- Greedy (
*,+) vs lazy (*?,+?) ka fark na samajhna. - Special characters ko escape karna bhoolna �
.,*,?etc.