Naqshni kichikdan boshlang
Regular expression matnda ma’lum ko‘rinishni topadi. r"..." raw satr backslash’larni qulay yozadi. findall barcha mosliklarni qaytaradi, fullmatch esa butun satrni tekshiradi. Guruhlar faqat kerakli qismlarni ajratadi.
Sodda log tahlili
Darsdagi sintetik logda user va status aniq formatga ega. Strukturalangan JSON log bo‘lsa, regex o‘rniga JSON parser afzal. IPv4’ni faqat \d+ naqshi bilan topish uning haqiqiy IP ekanini kafolatlamaydi; keyin ipaddress bilan validatsiya qiling.
Ishlash xavfi
Ichma-ich cheksiz takrorlar ayrim regex dvigatellarida ortiqcha backtracking keltiradi. Kirish uzunligini cheklang, aniq format va sodda naqsh tanlang. .* bilan hamma narsani yutib yuboradigan ifodani ehtiyotkorlik bilan qo‘llang. Testga mos, mos bo‘lmagan va juda uzun satrni qo‘shing.
Python’da ko‘rib chiqamiz
import re
log = "user=ali status=FAIL\nuser=vali status=OK\nuser=ali status=FAIL"
matches = re.findall(r"user=(\w+) status=FAIL", log)
print(len(matches))Misolni
Mustaqil mashq
FAIL foydalanuvchilarini Counter bilan sanang. Tire bor user nomi uchun naqshni moslang. Noto‘g‘ri formatli qatorlarni alohida ro‘yxatga yozing.