Python дар Regular Expression-ҳо муқаддима
Regular expression-ҳо фармонҳо барои ҷустуҷӯи мураккаб ва иваз (ё танҳо ҷустуҷӯ) мебошанд. Онҳо имкон медиҳанд чизҳои хеле ҷолиб анҷом диҳед, аммо, мутаассифона, дар омӯзиш нисбатан душвор мебошанд.
Барои оғози кор бо regular expression-ҳо дар Python, мо бояд модули махсуси re-ро ворид кунем:
import re
Модули re методҳоеро дар бар мегирад, ки барои кор бо regular expression-ҳо пешбинӣ шудаанд. Regular expression маҷмӯи фармонҳост ва аз ду навъ рамз иборат аст: аз онҳое, ки худро ифода мекунанд ва аз рамзҳои фармон, ки аломатҳои махсус номида мешаванд.
Ошноӣ бо regular expression-ҳоро беҳтар аст бо мисоли методаи sub оғоз кард, ки барои иваз дар сатр истифода мешавад. Дар параметри якум метод чизеро, ки бояд иваз карда шавад, мегирад, дар дуюм - ба чӣ иваз карда шавад. Дар параметри сеюм сатрро, ки дар он бояд иваз анҷом дода шавад, муайян мекунем. Дар параметри чаҳоруми ихтиёрӣ миқдори ивазҳоро муқаррар мекунем. Содатарин иваз бо истифода аз ин метод инҳоянд:
res = re.sub('a', '!', 'bab')
print(res) # 'b!b'-ро хориҷ мекунад
Чун шумо дидӣ, дар regular expression ҳарфҳо худро ифода мекунанд. Ҳамон чиз ба рақамҳо ҳам тааллуқ дорад. Биёед рақами 2-ро ба ! иваз кунем:
res = re.sub('2', '!', '12abc3')
print(res) # '1!abc3'-ро хориҷ мекунад
Аммо нуқта аломати махсус аст ва ҳар як аломат-ро ифода мекунад. Дар мисоли навбатӣ биёед зерсатрро бо ин шаблон ёбем: ҳарфи 'x', сипас ҳар як аломат, боз ҳам ҳарфи 'x':
res = re.sub('x.x', '!', 'xax eee')
print(res) # '! eee'-ро хориҷ мекунад
Сатр дода шудааст:
txt = 'ahb acb aeb aeeb adcb axeb'
Regular expression-еро нависед, ки сатрҳои 'ahb', 'acb', 'aeb'-ро бо шаблон ёбад: ҳарфи 'a', ҳар як аломат, ҳарфи 'b'.
Сатр дода шудааст:
txt = 'aba aca aea abba adca abea'
Regular expression-еро нависед, ки сатрҳои 'abba', 'adca', 'abea'-ро бо шаблон ёбад: ҳарфи 'a', 2 ҳар як аломат, ҳарфи 'a'.
Сатр дода шудааст:
txt = 'aba aca aea abba adca abea'
Regular expression-еро нависед, ки сатрҳои 'abba' ва 'abea'-ро ёбад, 'adca'-ро нагирад.