Почетна » како да » Како користити основне регуларне изразе за тражење бољег и уштеду времена

    Како користити основне регуларне изразе за тражење бољег и уштеду времена

    Без обзира да ли сте претраживали помоћу Грепа или гледали програме који за вас могу да преименују датотеке, вероватно сте се запитали да ли постоји лакши начин да обавите свој посао. Срећом, постоји и зове се "регуларни изрази."

    (Стрип из КСКЦД.цом)

    Шта су регуларни изрази?

    Редовни изрази су изјаве обликоване на веома специфичан начин и могу представљати много различитих резултата. Такође познати као "регек" или "регекп", они се првенствено користе у функцијама именовања и претраживања датотека. Један регек се може користити као формула за креирање више различитих могућих излаза, од којих се све тражи. Алтернативно, можете одредити како групу датотека треба именовати навођењем регекса, а ваш софтвер може поступно прећи на сљедећи жељени излаз. На овај начин можете преименовати више датотека у више фасцикли веома једноставно и ефикасно, а можете и да превазиђете ограничења једноставног система нумерисања..

    Пошто се коришћење регуларних израза ослања на посебну синтаксу, ваш програм мора бити способан да их чита и рашчлањује. Многи програми за преименовање батцх датотека за Виндовс и ОС Кс имају подршку за регекпс, као и за цросс-платформу алат за претраживање ГРЕП (који смо дотакли у Басх Сцриптинг за почетнике) и Авк алат за командну линију за * Ник. Осим тога, користе их многи алтернативни управитељи датотека, покретачи и алати за претраживање, а они имају веома важно мјесто у програмским језицима као што су Перл и Руби. Друга развојна окружења као што су .НЕТ, Јава и Питхон, као и надолазећи Ц ++ 11, пружају стандардне библиотеке за коришћење регуларних израза. Као што можете замислити, они могу бити заиста корисни када покушавате смањити количину кода који сте ставили у програм.

    Напомена о знаковима за излазак

    Пре него што вам покажемо примере, желели бисмо нешто да истакнемо. Користићемо басх схелл и греп команду како бисмо вам показали како применити регуларне изразе. Проблем је у томе што понекад желимо да користимо специјалне знакове које треба проследити греп-у, а басх схелл ће протумачити тај знак јер га и схелл користи. У таквим околностима, морамо да „побегнемо“ од ових карактера. Ово може бити збуњујуће, јер се то „скакање“ знакова дешава и унутар регексова. На пример, ако желимо да унесемо ово у греп:

    \ Т<

    то ћемо морати да заменимо са:

    . \ Т<

    Сваки специјални карактер овде добија једну обрнуту косу црту. Алтернативно, можете користити и једноструке наводнике:

    '\ Т<'

    Појединачни цитати кажу басх НЕ да интерпретира оно што је унутар њих. Док ми тражимо да се ови кораци предузму како бисмо вам могли демонстрирати, ваши програми (посебно они засновани на ГУИ) често неће захтијевати ове додатне кораке. Да би ствари биле једноставне и јасне, стварни регуларни израз ће вам бити дат као цитирани текст, а ви ћете видети скривену синтаксу у снимцима екрана командне линије.

    Како се шире?

    Регекпс су веома концизан начин да се изрази термини тако да их рачунар може проширити на више опција. Погледајмо следећи пример:

    том [0123456789]

    Квадратне заграде - [и] - кажу рашчлањивању мотора да све што је унутра, било који ЈЕДАН карактер може бити коришћен да се подудара. Све што се налази унутар тих заграда се назива скуп знакова.

    Дакле, ако бисмо имали огромну листу уноса и користили смо овај регек за претрагу, следећи термини би се подударали:

    • том
    • том0
    • том1
    • том2
    • том3

    и тако даље. Међутим, следећи списак НЕЋЕ се подударати, па се НЕ приказује у вашим резултатима:

    • парадајз; регек не узима у обзир слова након "том"
    • Том; Регек је осјетљив на велика и мала слова!

    Такође можете да изаберете да претражујете са периодом (.) Који ће омогућити присутност било ког знака, све док постоји знак.

    Као што можете видети, слагање

    .том

    није споменуо термине који су на почетку имали само "том". Дошли су чак и „зелени парадајзи“, јер се простор пре „том“ рачуна као лик, али термини попут „томФ“ нису имали карактер на почетку и стога су игнорисани.

    Напомена: Грепово подразумевано понашање је да врати целу линију текста када неки део одговара вашем регексу. Други програми то можда неће урадити, а то можете искључити у греп-у са ознаком '-о'.

    Такође можете да наведете алтернацију помоћу цеви (|), као овде:

    специали (с | з) е

    Ово ће пронаћи оба:

    • специализе
    • специализе

    Када користите греп команду, морамо да побегнемо од специјалних знакова (, |, и) са обрнутим косим цртама, као и да користимо заставицу '-Е' да би ово радило и избегли ружне грешке.

    Као што смо горе поменули, ово је зато што морамо рећи басх схелл-у да проследи ове знакове на греп и да не ради ништа са њима. Застава '-Е' каже грепу да користи заграде и цијеви као посебне знакове.

    Можете претраживати по искључењу користећи знак који се налази унутар углова и на почетку скупа:

    том [^ Ф |

    Опет, ако користите греп и басх, не заборавите да избегнете ту цев!

    Термини који су били на листи, али се НИСУ приказали су:

    • том0
    • том5
    • том9
    • томФ

    Ово се не подудара са нашим регексом.

    Како могу да користим окружења?

    Често тражимо на основу граница. Понекад желимо само низове који се појављују на почетку речи, на крају речи, или на крају линије кода. То се лако може урадити користећи оно што зовемо сидра.

    Употреба знака (изван заграда) вам омогућава да одредите „почетак“ линије.

    ^ том

    Да бисте потражили крај линије, користите знак за долар.

    том $

    Видите да се наш траг за претрагу појављује ПРЕ сидра у овом случају.

    Можете и за утакмице које се појављују на почетку или на крају речи, а не на целе линије.

    \ Т

    том>

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

    Резултати су исти. Уверите се да користите једноструке наводнике, а не двоструке наводнике.

    Други ресурси за напредни Регекпс

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

    • Зитрак.цом има неколико страница са конкретним примјерима зашто се ствари не поклапају.
    • Регулар-Екпрессионс.инфо такође има убилачки водич за много напреднијих ствари, као и згодну страницу.
    • Гну.орг има страницу посвећену коришћењу регекпс-а са греп-ом.

    Такође можете да правите и тестирате своје регуларне изразе користећи бесплатни онлајн алат заснован на Фласху, назван РегЕкр. Он ради док типкате, бесплатан је и може се користити у већини прегледача.


    Имате ли омиљену употребу за регуларне изразе? Знаш ли за велики пакет преименовања који их користи? Можда се само хвалиш својим греп-фу-ом. Доприносите својим мислима коментаришући!