Python жолдық тұрақты өрнектер үшін белгілер
Тұрақты өрнектермен жұмыс істейтін әдістер үшін міндетті емес параметрлердің бірі ретінде белгілерді орнату үшін келесі синтаксис қолданылады:
flags=re.белгі атауы
Тұрақты өрнектермен жұмыс істеу үшін негізгі белгілер
| Белгі | Мақсаты |
|---|---|
re.IGNORECASE |
Таңбалардың жазу регистрін елемеу. |
re.DOTALL |
Нүкте кез келген таңбаны, соның ішінде жол аударуды да білдіреді. |
re.I |
Іздеуді регистрге сезімтал емес етеді. |
re.L |
Сөздерді ағымдағы тілге сәйкес іздейді.
Бұл түсіндіру әліпби тобына (\w және
\W), сондай-ақ сөз шекарасының
әрекетіне (\b және \B)
әсер етеді.
|
re.M |
$ таңбасы мәтнің кез келген жолының
соңында (тек мәтнің соңында ғана емес) іздейді
және ^ таңбасы мәтнің кез келген жолының
басында (тек мәтнің басында ғана емес) іздейді.
|
re.S |
Нүктенің (.) мәнін жаңа жолды қоса
алғанда, кез келген таңбамен сәйкесуге өзгертеді.
|
re.U |
Әріптерді Unicode таңбалар жиынына сәйкес
түсіндіреді. Бұл белгі \w, \W,
\b, \B әрекетіне әсер етеді.
Python 3+ болғанда бұл белгі әдепкі
бойынша орнатылған.
|
re.X |
Көпжолды тұрақты өрнек синтаксисін қолдайды.
Ол үлгі ішіндегі бос орындарды елемейді ([]
жиыны ішіндегі бос орындар немесе кері көлбеу
сызықпен экранияланған кезде қоспағанда) және
экранияланбаған '#' түсініктеме ретінде
қарастырады.
|
Мысал
re.IGNORECASE белгісін қолданып, таңбалардың
регистрін елемеуге болады. Мұны қалай жасауға болатынын
көрейік. Бұл мысалда тұрақты өрнек тек кіші әріптерді табады:
txt = 'aaa bbb CCC DDD'
res = re.sub('[a-z]+', '!', txt)
print(res)
Кодты орындау нәтижесі:
'! ! CCC DDD'
Мысал
Енді әдістің төртінші параметріне re.IGNORECASE
белгісін қосайық, сонда тұрақты өрнек барлық регистрдегі
таңбаларды іздей бастайды:
txt = 'aaa AAA bbb BBB'
res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE)
print(res)
Кодты орындау нәтижесі:
'! ! ! !'
Мысал
Тұрақты өрнекпен барлық жол аударуларды табайық:
txt = '''aaa
bbb'''
res = re.sub('\n', '!', txt)
print(res)
Орындалған кодтың нәтижесі:
'aaa!bbb'
Мысал
Бірақ, егер барлық таңбаларды ауыстыру қажет болса, тұрақты өрнекке нүкте қойғанда, жол аударулар ұсталмайды:
txt = '''aaa
bbb'''
res = re.sub('.', '!', txt)
print(res)
Орындалған кодтың нәтижесі:
'!!!
!!!'
Мысал
Бұл қатені түзету үшін re.DOTALL белгісін
қолдану керек:
res = re.sub('.', '!', txt, flags=re.DOTALL)
print(res)
Орындалған кодтың нәтижесі:
'!!!!!!!'
Мысал
Параметрге бірнеше белгі беруге болады, олардың арасына
+ операторын қойып. Алдымен жол соңындағы
'a' әрпін ауыстырайық:
txt = '''
aaa
AAA
aaa'''
res = re.sub('aaa
, '!', txt)
print(res)
Орындалған кодтың нәтижесі:
'''
aaa
AAA
!
'''
Мысал
Енді re.M белгісін қояйық:
res = re.sub('aaa
, '!', txt, flags=re.M)
print(res)
Орындалған кодтың нәтижесі:
'''
!
AAA
!
'''
Мысал
Енді регистрді елемеу үшін тағы бір белгіні қолданайық:
res = re.sub('aaa
, '!', txt, flags=re.M+re.IGNORECASE)
print(res)
Орындалған кодтың нәтижесі:
'''
!
!
!
'''