Ի վերջո, տիրապետեք այդ հմտությանը` փորձարկելով ինքներդ ձեզ հետ

Հրաժում. այս ձեռնարկը հիմնված է փորձերի վրա, հետևաբար այն այնքան էլ պարզ չէ, որպեսզի կարողանաք պարզել, թե ինչպես է արձագանքում regex-ը: Մի հապաղեք խորացնել արտահայտությունները ձեռնարկի ընթացքում

Բովանդակության աղյուսակ

  • Ի՞նչ է ռեգեքսը:
  • Հիմունքներ
  • Շրջանակներ
  • Քանակականիչներ
  • Խմբերի ընտրություն
  • Արտադասարանական ծրագիր

Ինչ է Regex-ը:

Regex-ը շատ հզոր գործիք է, երբ դուք աշխատում եք տվյալների հետ: Պե՞տք է զտել տեքստը կայքում էլեկտրոնային նամակը հաստատելու համար: Գնացեք Regex-ի հետ: Պետք է մաքրել տեքստը NLP նախագծի համար: Regex-ը ձեր ընկերն է: Հնարավորությունները անսահման են։

Բայց դուք արագ հասկանում եք, որ դա այնքան էլ աննշան չի լինի, քանի որ տարօրինակ խորհրդանիշների այս կույտերն այնքան էլ իմաստ չունեն, և դա նորմալ է: Այսինքն՝ մենք քայլ առ քայլ կվերացնենք սա՝ փորձեր անելով:

Այդ նպատակով մենք կօգտագործենք Regex101-ը, որպեսզի կարողանանք փորձարկել մեր ռեգեքսը ավազարկղում:



Այն պարզ պահելու համար, regex-ը թույլ է տալիս զտել նիշերի տողերի բարդ սխեմաներ, այնպես որ կարող եք ընդունել տարբեր ձևաչափեր, երբ, օրինակ, ամսաթիվ եք խնդրում: Այն հեշտացնում է յուրաքանչյուր խմբի (ամսական խումբ, օրվա խումբ, տարվա խումբ, բայց մենք դրան ավելի ուշ) պահպանելը՝ այն շահարկելու համար:

Ինչպես է դա աշխատում?

Հիմունքներ

Այս մասի համար տեքստային տողի վանդակում տեղադրեք հետևյալ տեքստը.

բավական հեշտ, ես կսովորեմ ռեգեքս:

Սկսած հիմունքներից, եթե նիշերի որևէ շարան դնեք, այն կզտի դրանք, եթե գտնի դրանք նշված հերթականությամբ: Օրինակ, եթե ավելացնեք ea կանոնավոր արտահայտության դաշտում, դուք կստանաք երկու համընկնում.

Ուշադրություն դարձրեք, որ արտահայտությունը կարող է լինել բառի մեջտեղում

Բայց ի՞նչ, եթե ցանկանաք ընտրել ea միայն այն ժամանակ, երբ այն սկսում է տողը: Դե, ^ նշանը թույլ է տալիս ընտրել միայն այն, ինչ սկզբում է: Պարզապես պետք է այն տեղադրել այն արտահայտությունից առաջ, որը ցանկանում եք զտել

Դուք կարող եք նույն բանն անել, եթե ցանկանում եք ինչ-որ բան զտել տողի վերջում՝ օգտագործելով $ նշանը: Այս դեպքում, եթե ես ուզում եմ զտելնախ. , ես պետք է մուտքագրեմ $ex:: Փորձենք սա.

Դա աշխատեց! Բայց ոչ այն պատճառով, ինչ մտածում ես։ Որպես ապացույց, փոխեք թեստային տողի ժամանակաշրջանը այն ամենի, ինչ ուզում եք, այն ամեն դեպքում կաշխատի:

հա ?? Ի՞նչ կաշխատի, եթե մեր թեստային տողում կետ չունենանք: Պարզապես այն պատճառով, որ ռեգեքսի ժամանակաշրջանն ունի իր նշանակությունը. Դա նշանակում է, որ այն կհամապատասխանի ցանկացած նիշի (բացի նոր տողից): Այս դեպքում մեր արտահայտությունը չի զտում ex. տողի վերջում, այլ ex+ցանկացած նիշ տողի վերջում: Եթե ​​այնուամենայնիվ ցանկանում էիք որոնել կետ, պարզապես խուսափեք դրանից՝ կետից առաջ դնելով փախչող նիշ (\ ):

Շրջանակներ

Այս մասի համար տեքստը, որի հետ մենք աշխատելու ենք

տվյալների գիտության ուսուցումը 1 օր չի տևում

Լավ, դուք սովորեցիք, թե ինչպես զտել տեքստի պարզ հատվածը: Բայց ի՞նչ կլինի, եթե ես ձեզ խնդրեմ ցույց տալ յուրաքանչյուր կերպար, որը թիվ չէ:

Դե ռեգեքսում դա իրականում պարզ է: Քառակուսի փակագծերը []թույլ են տալիս զտել այն ամենը, ինչ գտնվում է այս փակագծերի միջև: Ո՞րն է տարբերությունը պարզապես այն տառերը մուտքագրելու հետ, որոնք մենք ցանկանում ենք զտել: Դե, abc-ը կզտեր abc-ին համապատասխանող ցանկացած տող, մինչդեռ [abc]-ը կհամապատասխանի ցանկացած նիշի, որը կամ a, b կամ c է:

Վերադառնանք մեր խնդրին, եթե մենք ցանկանում ենք զտել ցանկացած փոքրատառ, մենք պետք է մուտքագրենք [abcdefghijklmnopqrstuvwxyz]: Բարեբախտաբար մեզ համար կան որոշ դյուրանցումներ: Փոքրատառերի համար նրա [a-z]ն է: Փորձենք սա մեր նախադասությամբ.

Նմանապես, կան այլ դյուրանցումներ.

  • [A-Z] բոլոր գլխարկների համար
  • [a-q] a-ից մինչև q բոլոր տառերի համար
  • [a-zA-Z0–9] կամ \w յուրաքանչյուր այբբենական թվային նիշի համար
  • [^a-z] ընտրել այն ամենը, ինչը փոքրատառ չէ (^ քառակուսի փակագծերում ցույց է տալիս ժխտում)
  • …շատ պատվերով կարող եք պատրաստել

Քանակականիչներ

Այս մասի համար նախադասությունը կլինի

2022 թվականին ես կցանկանայի շտկել իմ քնի ժամանակացույցը

Քանակիչները հիմնականում այստեղ են՝ օգնելու ձեզ զտել կերպարը, որը տեղի է ունենում որոշակի ժամանակ՝ կախված ձեր կարիքներից: Նրանք երկուսն էլ կարող են օգտագործվել նիշերից և միջակայքներից հետո:

  • *-ը թույլ է տալիս ընտրել նիշի 0 և անսահմանափակ քանակի միջև

s[le]*-ով մենք նշում ենք, որ ուզում ենք առնվազն s, որին հաջորդում է l, e, կամ Ոչ մեկը: մեկ կամ մի քանի անգամ՝ sl, s, se, seel, seele, slee…..

  • համընկնում է նախորդ նիշին 0 կամ 1 անգամ: Օգտակար է, երբ փորձում եք զտել մի բան, որն անհրաժեշտ չէ (օրինակ՝ ամսաթվի օրը, կարող եք ասել 2022 թվականի հունվար՝ առանց օրը նշելու):

s[le]?-ով մենք նշում ենք, որ ցանկանում ենք s-ը, և գուցե փակագծերի միջև եղած նիշերից մեկը (միայն մեկ ! ): Այնուհետև դուք կարող եք ունենալ՝ s, see կամ sl:

  • + համընկնում է նախորդ գրանշանի հետ առնվազն մեկ անգամ

s[le]+-ով մենք նշում ենք, որ ուզում ենք s-ը և առնվազն մեկ l և մեկ e, անկախ հաջորդականությունից: Այն կարող է լինել sle, sel, seel, slee…

  • {x} նշանակում է, որ դուք ցանկանում եք, որ նիշը կրկնվի x անգամ, մինչդեռ {x,y} նշանակում է, որ դուք ցանկանում եք, որ այն կրկնվի x և y անգամների միջև։

e{2} նշանակում է, որ մենք ցանկանում ենք, որ e-ը հայտնվի երկու անգամ (ee): Եթե ​​ուզենայինք 1-ից երկու անգամ հայտնվել, ապա կգրեինք e{1,2}: Փորձեք ինքներդ:

Նշում. երբ օգտագործում եք գանգուր փակագծերը երկու արգումենտներով ( {x,y} ), պետք է հիշել երկու բան.

  • Եթե ​​դուք չեք նշում x ( {,y} ), դա կնշանակի, որ դուք փնտրում եք ձեր կերպարը մինչև y անգամ։
  • Եթե ​​դուք չեք նշում y ( {x,} ), դա կնշանակի, որ փնտրում եք ձեր կերպարը առնվազն x անգամ։

Խմբերի ընտրություն

Այս մասի համար մենք կօգտագործենք այս ամսաթիվը որպես մեր փորձարկման տող.

27/01/2022

Լավ, մենք սովորեցինք, թե ինչպես զտել այն, ինչ ուզում էինք, բայց ինչպես կարող ենք այն խմբավորել: Օրինակ, եթե մենք աշխատում ենք ամսաթվերի հետ, ինչպե՞ս ենք առանձնացնում օրվա մասը, ամսվա մասը և տարվա մասը:

Regex-ում մենք ֆիքսում ենք նիշերի տողերը փակագծերի միջև (): Եկեք մուտքագրենք այս ռեգեքսի կոդը.

(\d{2})\/(\d{2})\/(\d{4})

Բայց նախքան ձեզ կասեմ, թե ինչ է դա, փորձեք ինքներդ վերլուծել այն (ակնարկ.\d նշանակում է ցանկացած թվանշան): Դա կարող է սարսափելի թվալ, բայց իրականում հեշտ է, եթե այն քանդեք:

Այսպիսով, (\d{2})նշանակում է, որ մենք ուզում ենք երկու թվանշան և դրանք դնում ենք խմբի մեջ: Մենք դրանք առանձնացնում ենք կտրվածքով / (հետին շեղը պարզապես դրանից խուսափելու համար է, քանի որ դուք չեք կարող օգտագործել միայն շեղը ձեր ռեգեքսի կոդում: Դրանով դուք ասում եք regex-ին «մի կարդա հաջորդ նիշը որպես հատուկ»), դրանք պետք է լինեն օրն ու ամիսը։ Մենք նորից անում ենք վերջին բանը, բայց 4-ի փոխարեն (\d{4}): Դա նշանակում է, որ մենք տարվա համար վերցնում ենք 4 թվանշան:

Բայց նայեք ձեր էջի աջ մասում, կարող եք տեսնել խաղի տեղեկատվությունը: Թվանշաններն առանձնացված են այնպես, ինչպես մենք էինք ուզում։

Բայց պատկերացնո՞ւմ եք, որ մենք ուզում էինք օրը ավելացնել որպես ամսաթվի կամընտիր բաղադրիչ: Խմբեր կազմելիս, եթե փակագծերի սկզբում դնում եք ?: այսպես (?:…), ապա այն ստեղծում է «չգրավող խումբ» (ինչը նշանակում է, որ այն չի լինի հանդիպմանը: տեղեկատվական ներդիր):

Ինչու է դա հետաքրքիր: Որովհետև դուք այժմ կարող եք քանակականներ տեղադրել այս խմբի վրա, և ո՞ր մեկի մասին ենք մենք խոսել այս առիթով: Դա ճիշտ է, հարցաքննության նշանը:

Այնուհետև այս կոդը թույլ է տալիս ավելացնել այդ պայմանը օրվա համար.

(?:(\d{2})\/)?(\d{2})\/(\d{4})

Օրը հանեցինք

Եվ այն այլևս չի հայտնվում, առանց վթարի:

Արտադասարանական ծրագիր

Ինչու՞ չփորձել այս ամբողջ գիտելիքները կիրառել կարճ նախագծի մեջ՝ ստուգելու ձեր հմտությունները: Այս հոդվածում ես ձեզ տալիս եմ մեկ խնդիր, որը պետք է լուծել մանրամասն լուծումով, եթե խրված եք: Դուք պետք է փորձեք, դա այն է, որ մենք պրակտիկայով ենք պահում իրերը ;)



Եզրակացություն

Եվ դրանով դուք կկատարեք ռեգեքսի հետ անհրաժեշտ աշխատանքի 90%-ը: Ավելի ճշգրիտ սցենարների համար Google-ը և ավազարկղը, որը մենք օգտագործում էինք, ձեր ընկերներն են:

Եթե ​​չեք հիշում ինչ-որ շարահյուսություն կամ ցանկանում եք ավելի կոնկրետ ինչ-որ բան գտնել, նայեք այս խաբեության թերթիկին:



Շնորհակալություն այս հոդվածը կարդալու համար, հուսով եմ, որ գտել եք այն տեղեկատվությունը, որը փնտրում էիք: Մաղթում եմ ձեզ հաջողություն ձեր տվյալների գիտության կամ ծրագրավորման ճանապարհորդության մեջ ❤