Питхон

Регуларни изрази који користе Питхон 3

Регуларни изрази који користе Питхон 3
Регуларни изрази се често доживљавају као овај заиста опскурни низ хијероглифа које човек обично копира са Интернета и залепи у свој код. Ова мистериозна чаролија тада показује магичне могућности проналажења образаца унутар низова текста, а ако то лепо замолимо, чак ће нам учинити услугу да заменимо дати образац унутар низа нечим лепшим.

На пример, када пишете руковаоце за УРЛ (а Бог вам помогао ако пишете испочетка), онда често желите да прикажете исти резултат без обзира на завршно '/' у УРЛ-у. Е.г хттпс: // пример.цом / усер / сеттингс / и хттпс: // екампле.цом / усер / сеттингс би требало да воде на исту страницу упркос завршном слову '/'. 

Међутим, не можете занемарити све косе црте, на пример:

  1. Коса црта унапред између „корисник“ и „подешавања“, е, „корисник / подешавања“.
  2. Такође ћете морати узети у обзир '//' на почетку вашег ФКДН-а праћено 'хттпс'.

Дакле, смислили сте правило попут: „Занемарите само косе црте праћене празним простором.”И ако желите можете то правило кодирати низом иф-елсе наредби. Али то ће постати прилично гломазно. Можете да напишете функцију која каже цлеанУрл () која вам ово може додати. Али свемир ће ускоро почети да баца више кривудавих лопти на вас. Ускоро ћете се наћи у функцијама писања за цлеанХеадерс (), процессЛог () итд. Или можете да користите регуларни израз кад год је потребна било која врста подударања узорака.

Стандардни ИО и датотеке

Пре него што уђемо у детаље регуларних израза, вреди напоменути модел који већина система има за токове текста. Ево његовог кратког (непотпуног) сажетка:

  1. Текст се обрађује као (један) ток знакова.
  2. Овај ток може потицати из датотеке Уницоде или АСЦИИ текста или са стандардног уноса (тастатура) или са удаљене мрежне везе. Након обраде, рецимо скриптом регуларног израза, излаз или иде у датотеку или мрежни ток или у стандардни излаз (нпр.г, конзола)
  3. Поток се састоји од једне или више линија. Свака линија има нула или више знакова праћених новом линијом.

Ради једноставности, желим да замислите да је датотека састављена од редова који се завршавају знаком новог реда. Ову датотеку рашчлањујемо у појединачне редове (или низове) који се завршавају или новом линијом или нормалним знаком (за последњи ред).

Редовни изрази и низ

Редовни израз нема нарочито везе са датотекама. Замислите га као црну кутију која може узети као улаз било који произвољни низ било које (коначне) дужине, а када стигне на крај овог низа може:

  1. Прихвати низ. Другим речима, низ шибице регуларни израз (регуларни израз).
  2. Одбаци низ, тј.е, стринг не меч регуларни израз (регуларни израз).

Упркос својој природи црне кутије, додаћу још неколико ограничења овој машинерији. Редовни израз чита низ секвенцијално, слева надесно и истовремено чита само један знак. Значи низ “ЛинукХинт” са читати као:

'Л "и" н "у" к "Х" и "н" т' [Лево надесно]

Почнимо једноставно

Најједноставнији тип регуларног израза био би тражење и подударање низа 'Ц'. Регуларни израз за њега је само 'Ц'. Сасвим тривијално. Да бисте то урадили у Питхону, прво је потребно да увезете ре модул за регуларне изразе.

>>> поновни увоз

Затим користимо функцију ре.Претрага(образац, низ) где шаблон је наш редован израз и низ у улазном низу унутар којег тражимо образац.

>>> ре.сеарцх ('Ц', 'Ова реченица садржи намерно слово Ц')

Функција узима образац 'Ц', тражи га у улазном низу и исписује локацију (распон) где се налази наведени образац. Овај део низа, овај подниз је оно што се подудара са нашим регуларним изразом. Да није било таквог подударања, излаз би био Ниједан објект.

Слично томе, образац „регуларни израз“ можете претраживати на следећи начин:

>>> ре.претрага („регуларни израз“, „За обрасце претраживања можемо користити регуларне изразе.”)

ре.претрага (), ре.матцх () и ре.фуллматцх ()

Три корисне функције из модула ре укључују:

1.  ре.Претрага(образац, низ)

Ово враћа натраг подниз који одговара обрасцу, као што смо видели горе. Ако тада није пронађено подударање Ниједан се враћа. Ако се више поднизова подудара са датим узорком, пријављује се само прво појављивање.

2.  ре.меч(образац, низ)

Ова функција покушава да се подудара са испорученим узорком с почетка низа. Ако негде на пола пута наиђе на паузу, враћа се Ниједан.

На пример,

>>> ре.подударање ("Јох", "Јохн Дое")

Као што се низ „Моје име је Јохн Дое“ не поклапа, па самим тим Ниједан се враћа.

>>> испис (ре.подударање („Јох“, „Зовем се Јохн Дое“))
Ниједан

3.  ре.фуллматцх (образац, низ)

Ово је строже од оба горе наведена и покушава да пронађе тачно подударање узорка у низу, иначе је подразумевано Ниједан.

>>> испис (ре.фуллматцх ("Јох", "Јох"))

# Било шта друго неће бити подударно

Користићу само ре.Претрага() функција у остатку овог чланка. Кад год кажем, да регуларни израз прихвати овај низ, то значи да је атхе ре.Претрага() функција је пронашла одговарајући подниз у улазном низу и вратила га, уместо Ниједанобјект.

Специјалних знакова

Регуларни изрази попут „Јохн“ и „Ц“ нису од велике користи. Потребни су нам посебни знакови који специфично значе у контексту регуларних израза. Ево неколико примера:

    1. ^ - Ово одговара почетку низа. На пример, '^ Ц' ће се подударати са свим низовима који почињу словом Ц.
    2. $ - Ово одговара крају реда.
    3. . - Тачка означава један или више знакова, осим новог реда.
    4. * - Ово је нула или више карактера онога што му је претходило. Дакле, б * одговара 0 или више појављивања б. аб * се подудара само са а, аб и а
    5. + - Ово се односи на један или више карактера онога што му је претходило. Дакле, б + се подудара са 1 или више појава б. аб * се подудара само са а, аб и а
    6. \ - Повратна црта се користи као излазна секвенца у регуларним изразима. Дакле, желите регуларни израз за тражење дословног присуства симбола долара '$' уместо краја реда. \ $ Можете писати у регуларном изразу.
    7. Цурли заграде се могу користити за одређивање броја понављања која желите да видите. На пример, образац попут аб 10 означава да ће се низ са којим следи 10 б одговарати овом узорку. Можете одредити и опсег бројева, попут б 4,6 подудара се са низовима који садрже б поновљене 4 до 6 пута узастопно. Узорак за 4 или више понављања захтевао би само зарез, као б 4,
    8. Углате заграде и опсег знакова. РЕ као [0-9] може деловати као чувар места за било коју цифру између 0 и 9. Слично томе, можете имати цифре између једне и пет [1-5] или да се подударате са било којим великим словом [А-З] или било којим словом абецеде, без обзира на то да ли је велика или мала [А-з].
      На пример, било који низ од тачно десет цифара подудара се са регуларним изразом [0-9] 10, врло корисно када тражите бројеве телефона у датом низу.
    9. Можете да направите наредбу налик ИЛИ користећи | знак где се регуларни израз састоји од два или више регуларних израза, рецимо, А и Б. Редовни израз А | Б се подудара ако се улазни низ подудара са регуларним изразом А или са Б.
    10. Можете да групишете различите регуларне изразе. На пример, регуларни израз (А | Б) Ц ће се подударати са регуларним изразима за АЦ и

Постоји још много тога за покрити, али препоручио бих да учите док идете, уместо да преоптеретите свој мозак са пуно нејасних симбола и ивица. Када сумњате, Питхон документи су од велике помоћи и сада знате довољно да их лако пратите.

Практично искуство и референце

Ако желите да видите визуелну интерпретацију вашег регуларног израза, можете да посетите Дебуггек. Ова веб локација генерише приказ вашег регуларног израза у реалном времену и омогућава вам да га тестирате на основу различитих улазних низова.

Да бисте сазнали више о теоријском аспекту Регуларних израза, можда бисте желели да погледате првих неколико поглавља Увода у теорију рачунања Мајкла Сипсера. Веома га је лако пратити и показује важност регуларних израза као основног концепта самог израчунавања!

Битка за Веснотх 1.13.6 Развој објављен
Битка за Веснотх 1.13.6 објављено прошлог месеца, шесто је развојно издање у издању 1.13.к сериес и доноси низ побољшања, посебно корисничког интерфеј...
Како инсталирати Леагуе Оф Легендс на Убунту 14.04
Ако сте љубитељ Леагуе оф Легендс, ово је прилика да тестирате Леагуе оф Легендс. Имајте на уму да је ЛОЛ подржан на ПлаиОнЛинук ако сте корисник лину...
Инсталирајте најновију ОпенРА Стратеги Гаме на Убунту Линук
ОпенРА је Либре / Фрее Реал Тиме стратешки механизам који ствара ране Вествоод игре попут класичне Цомманд & Цонкуер: Ред Алерт. Дистрибуирани модови ...