Python тіліндегі реттік өрнектердегі таңбалар жиыны
\d және \w таңбалар топтары
өте икемді емес. барлық әріптерді тап, бірақ сандарды емес -
сияқты қарапайым міндетті де олар шеше алмайды. Мұндай міндеттер үшін
'немесе' операциясын білдіретін шаршы жақшаларды қолдану керек.
Шаршы жақшалар ішінде көрсетілген кез келген таңбаның орнына бір таңбаны ауыстырады. Мысалы,
мыналай: x[abc]x - біз
шеттерінде x әріптері тұруы керек, ал ортасында - бір таңба: 'a',
'b' немесе 'c' болады деп айтамыз.
Шаршы жақшалардан кейін қайталау операторларын жазуға болады. Мысалы, мыналай:
x[abc]+x - біз x-тердің арасында
'a', 'b' және 'c' таңбаларының кез келген саны болуы мүмкін деп айтамыз -
кез келген комбинацияда.
Тек таңбаларды тізбектей қойып қана қоймай,
екі таңбаның арасына дефис қойып таңбалар топтарын жасауға болады. Мысалы, мыналай:
[a-d] - біз
'a'-дан 'd'-ға дейінгі барлық таңбаларды аламыз.
Мысалдарды қарастырайық.
Мысал
Бұл мысалда іздеу үлгісі мынадай:
x-тердің арасында 'a'-дан
'z'-ға дейінгі кез келген әріп:
Кодты орындау нәтижесі:
'! ! ! x@x'
Мысал
Бұл мысалда іздеу үлгісі мынадай:
x-тердің арасында 'a'-дан
'k'-ға дейінгі кез келген әріп:
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'! ! xmx x@x'
Мысал
Бұл мысалда іздеу үлгісі мынадай:
x-тердің арасында 'A'-дан
'Z'-ға дейінгі кез келген әріп:
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'xax ! xcx x@x'
Мысал
Бұл мысалда іздеу үлгісі мынадай:
x-тердің арасында 0-ден
9-ға дейінгі кез келген сан:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'xax ! ! ! x@x'
Мысал
Бұл мысалда іздеу үлгісі мынадай:
x-тердің арасыnda 3-тен
7-ге дейінгі кез келген сан:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'xax x1x ! ! x@x'
Мысал
Бұл мысалда іздеу үлгісі мынадай:
x-тердің арасында 'a'-дан
'z'-ға дейінгі кез келген әріп немесе 1-ден
9-ға дейінгі сан:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'! ! ! ! x@x'
Мысал
Бұл мысалда іздеу үлгісі мынадай:
x-тердің арасында 'a'-дан
'z'-ға дейінгі кез келген әріп немесе 'A'-дан
'Z'-ға дейінгі әріп:
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'! ! ! x5x x@x'
Мысал
Бұл мысалда іздеу үлгісі мынадай:
x-тердің арасында 'a'-дан
'z'-ға дейінгі кез келген әріп немесе 1,
2 сандары:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'! ! ! ! x3x'
Мысал
Бұл мысалда іздеу үлгісі мынадай:
x-тердің арасында 'a'-дан
'z'-ға дейінгі әріптер 1 және одан да көп санында:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'xx ! ! ! x123x xa3x'
Мысал
Әріптер саны нөл де болуы мүмкін етіп жасайық:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
Нәтижесінде біз мынаны аламыз:
'! ! ! ! x123x xa3x'
Мысал
Шаршы жақшалардың ішінде экранирленген таңбаларды да көрсетуге болады. Әріптер мен сандардың нөл немесе одан да көп рет қайталанатын тізбегін табайық:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'! x@x ! ! !'
Мысал
Егер бізге басқа шаршы жақшаларды көрсету қажет болса, онда біз оларды да міндетті түрде экранирлейміз:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'! ! ! x3x'
Практикалық есептер
Мына жол берілген:
txt = 'aba aea aca aza axa'
Мына үлгі бойынша табатын реттік өрнек жазыңыз: шеттерінде 'a' әріптері тұр,
ал олардың арасында - 'b', 'e' немесе 'x' әріптері.
Мына жол берілген:
txt = 'a1a a3a a7a a9a aba'
Мына үлгі бойынша табатын реттік өрнек жазыңыз: шеттерінде 'a' әріптері тұр,
ал олардың арасында - 3-тен 6-ға дейінгі сан.
Мына жол берілген:
txt = 'aba aea afa aha aga'
Мына үлгі бойынша табатын реттік өрнек жазыңыз: шеттерінде 'a' әріптері тұр,
ал олардың арасында - 'a'-дан 'g'-ға дейінгі әріп.
Мына жол берілген:
txt = 'aba aea afa aha aga'
Мына үлгі бойынша табатын реттік өрнек жазыңыз: шеттерінде 'a' әріптері тұр,
ал олардың арасында - 'a'-дан 'f'-қа дейінгі және 'j'-дан
'z'-ға дейінгі әріп.
Мына жол берілген:
txt = 'aAa aea aEa aJa a3a'
Мына үлгі бойынша табатын реттік өрнек жазыңыз: шеттерінде 'a' әріптері тұр,
ал олардың арасында - 'a'-дан 'f'-қа дейінгі және 'A'-дан
'D'-ға дейінгі әріп.
Мына жол берілген:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Мына үлгі бойынша табатын реттік өрнек жазыңыз: шеттерінде 'a' әріптері тұр,
ал олардың арасында - кіші латын әріптері, қалғандарына тиіспестен.
Мына жол берілген:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Мына үлгі бойынша табатын реттік өрнек жазыңыз: шеттерінде 'a' әріптері тұр,
ал олардың арасында - кіші және үлкен латын әріптері, қалғандарына тиіспестен.
Мына жол берілген:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Мына үлгі бойынша табатын реттік өрнек жазыңыз: шеттерінде 'a' әріптері тұр,
ал олардың арасында - кіші латын әріптері мен сандар, қалғандарына тиіспестен.