Regex Excel-ում տողեր հանելու համար (մեկ կամ բոլոր համընկնումները)

  • Կիսվել Սա
Michael Brown

Այս ձեռնարկում դուք կսովորեք, թե ինչպես օգտագործել սովորական արտահայտություններ Excel-ում՝ գտնելու և հանելու ենթատողերը, որոնք համապատասխանում են տվյալ օրինաչափությանը:

Microsoft Excel-ը տրամադրում է մի շարք գործառույթներ տեքստը հանելու համար: բջիջներից. Այդ գործառույթները կարող են հաղթահարել ձեր աշխատաթերթերում լարերի արդյունահանման դժվարությունների մեծ մասը: Շատերը, բայց ոչ բոլորը: Երբ տեքստային ֆունկցիաները սայթաքում են, կանոնավոր արտահայտությունները գալիս են օգնության: Սպասեք… Excel-ը չունի RegEx ֆունկցիաներ: Ճիշտ է, ներկառուցված գործառույթներ չկան: Բայց չկա ոչինչ, որը կխանգարի ձեզ օգտագործել ձեր սեփականը :)

    Excel VBA Regex ֆունկցիան՝ տողեր հանելու համար

    Ձեր Excel-ում հատուկ Regex Extract ֆունկցիա ավելացնելու համար, տեղադրեք հետևյալ կոդը VBA խմբագրում. VBA-ում կանոնավոր արտահայտությունները միացնելու համար մենք օգտագործում ենք ներկառուցված Microsoft RegExp օբյեկտը:

    Հանրային ֆունկցիա RegExpExtract(տեքստը որպես տող, օրինաչափություն որպես տող, կամընտիր օրինակ_num Որպես ամբողջ թիվ = 0, կամընտիր match_case որպես բուլյան = ճշմարիտ ) Dim text_matches() Որպես String Dim matches_index As Integer On Error GoTo ErrHandl RegExpExtract = "" Սահմանել regex = CreateObject ( "VBScript.RegExp") regex.pattern = օրինաչափություն regex.Global = True regex.MultiLine համընկնում = True. ignorecase = False Else regex.ignorecase = True End If Set համապատասխանում է = regex.Execute(text) Եթե 0 < համընկնում է։Հաշվի՛ր, Հետո Եթե (0 = օրինակ_թիվ) Ապա ReDim text_matches(matches.Count - 1, 0) Համապատասխանությունների_ինդեքսի համար = 0 ԴեպիVBA RegExp, ես ձեզ խորհուրդ եմ տալիս կարդալ հաջորդ մասը, որտեղ քննարկվում են շատ ավելի հզոր .NET Regex ֆունկցիաներ:

    Պատվերով .NET-ի վրա հիմնված Regex ֆունկցիա Excel-ում տեքստ հանելու համար

    Ի տարբերություն VBA RegExp ֆունկցիաների, որոնք կարող է գրվել Excel-ի ցանկացած օգտագործողի կողմից, .NET RegEx-ը մշակողի ոլորտն է: Microsoft .NET Framework-ն աջակցում է Perl 5-ի հետ համատեղելի կանոնավոր արտահայտությունների լիարժեք շարահյուսություն: Այս հոդվածը ձեզ չի սովորեցնի, թե ինչպես գրել նման գործառույթներ (ես ծրագրավորող չեմ և չունեմ մի փոքր գաղափար, թե ինչպես դա անել :)

    Չորս հզոր գործառույթներ, որոնք մշակվել են ստանդարտ .NET RegEx շարժիչով, արդեն գրված են մեր մշակողների կողմից և ներառված են Ultimate Suite-ում: Ստորև մենք կներկայացնենք ֆունկցիայի մի քանի գործնական կիրառություն, որը հատուկ նախագծված է Excel-ում տեքստ հանելու համար:

    Խորհուրդ. .NET Regex շարահյուսության մասին տեղեկությունների համար տե՛ս .NET Regular Expression Language:

    Ինչպես հանել խայթոցները Excel-ում՝ օգտագործելով կանոնավոր արտահայտություններ

    Ենթադրելով, որ դուք տեղադրել եք Ultimate Suite-ի վերջին տարբերակը, սովորական արտահայտությունների միջոցով տեքստի արդյունահանումը հանգում է այս երկու քայլերին.

    1. Ablebits Data ներդիրում, Text խմբում սեղմեք Regex Tools :
    2. Regex Tools վահանակում ընտրեք աղբյուրի տվյալները, մուտքագրեք ձեր Regex օրինակը և ընտրեք Արտահանել տարբերակը: Արդյունքը որպես հատուկ ֆունկցիա, այլ ոչ թե արժեք ստանալու համար ընտրեք Տեղադրեք որպես բանաձև ստուգումըտուփ. Ավարտելուց հետո սեղմեք Արտահանել կոճակը:

    Արդյունքները կհայտնվեն նոր սյունակում՝ ձեր սկզբնական տվյալների աջ կողմում.

    AblebitsRegexExtract շարահյուսություն

    Մեր հատուկ գործառույթն ունի հետևյալ շարահյուսությունը.

    AblebitsRegexExtract(հղում, կանոնավոր_արտահայտում)

    Որտեղ:

    • Հղում (պահանջվում է) - հղում աղբյուրի տողը պարունակող բջիջին:
    • Regular_expression (պահանջվում է) - regex օրինաչափությունը համապատասխանելու համար:

    Կարևոր նշում: Ֆունկցիան աշխատում է միայն այն մեքենաների վրա, որոնցում տեղադրված է Ultimate Suite for Excel:

    Օգտագործման նշումներ

    Որպեսզի ձեր ուսուցման կորն ավելի հարթ լինի, իսկ ձեր փորձն ավելի հաճելի, խնդրում ենք ուշադրություն դարձնել հետևյալ կետերին.

    1. Բանաձև ստեղծելու համար կարող եք օգտագործել մեր Regex Tools կամ Excel-ի Insert function երկխոսությունը կամ մուտքագրել ֆունկցիայի ամբողջական անունը բջիջում: Բանաձևը տեղադրվելուց հետո դուք կարող եք կառավարել այն (խմբագրել, պատճենել կամ տեղափոխել), ինչպես ցանկացած բնիկ բանաձև:
    2. Նշումը, որը դուք մուտքագրում եք Regex Tools վահանակում, անցնում է 2-րդ արգումենտին: Հնարավոր է նաև կանոնավոր արտահայտություն պահել առանձին վանդակում։ Այս դեպքում պարզապես օգտագործեք բջջային հղում 2-րդ արգումենտի համար:
    3. Ֆունկցիան հանում է առաջին հայտնաբերված համընկնումը :
    4. Լռելյայն, ֆունկցիան case է: -զգայուն ։ Մեծատառերի անհամապատասխանության համար օգտագործեք (?i) օրինաչափությունը:
    5. Եթե համընկնում չի գտնվել, ապա #N/A սխալ էվերադարձվել է:

    Regex՝ երկու նիշերի միջև տող հանելու համար

    Երկու նիշերի միջև տեքստ ստանալու համար կարող եք օգտագործել կա՛մ նկարահանող խումբ, կա՛մ շուրջը նայել:

    Եկեք ասեք, որ ցանկանում եք տեքստ հանել փակագծերի միջև: Նկարահանող խումբը ամենահեշտ ձևն է:

    Նշված 1 . \[(.*?)\]

    Արդյունքը ետևում և առաջ նայելով դրական կլինի: նույնը:

    Նշման 2 : (?<=\[)(.*?)(?=\])

    Խնդրում ենք ուշադրություն դարձնել, որ մեր գրավող խումբը (.*?) կատարում է ծույլ որոնում տեքստի համար երկու փակագծերի միջև՝ առաջինից [ մինչև առաջինը ]: Առանց հարցական նշանի (.*) նկարահանող խումբը կկատարի ագահ որոնում և կգրանցի ամեն ինչ առաջինից [մինչև վերջինը]: հետևյալը.

    =AblebitsRegexExtract(A5, $A$2)

    Ինչպես ստանալ բոլոր համընկնումները

    Ինչպես արդեն նշվեց, AblebitsRegexExtract ֆունկցիան կարող է միայն մեկ համընկնում հանել: Բոլոր համընկնումները ստանալու համար կարող եք օգտագործել VBA ֆունկցիան, որը մենք ավելի վաղ քննարկել ենք: Այնուամենայնիվ, կա մեկ նախազգուշացում. VBA RegExp-ը չի աջակցում խմբերի գրավմանը, ուստի վերը նշված օրինաչափությունը կվերադարձնի նաև «սահմանային» նիշերը, մեր դեպքում փակագծերը:

    =TEXTJOIN(" ", TRUE, RegExpExtract(A5, $A$2))

    Ազատվելու համար փակագծերից, ՓՈԽԱՐԻՆԵՔ դրանք դատարկ տողերով ("")՝ օգտագործելով այս բանաձևը.

    =SUBSTITUTE(SUBSTITUTE(TEXTJOIN(", ", TRUE, RegExpExtract(A5, $A$2)), "]", ""),"[","")

    Ավելի լավ ընթեռնելիության համար մենք օգտագործում ենք ստորակետ՝ սահմանազատողի համար:

    Ռեգեքս երկու տողերի միջև տեքստ հանելու համար

    Մոտեցումը, որը մենք աշխատել ենքմեկնաբանեք այն բառացիորեն):

  • (?:[A-Za-z\d\-\.]{2,255}\.): - չգրանցող խումբ՝ երրորդ մակարդակի, չորրորդ մակարդակի և այլն տիրույթները բացահայտելու համար, եթե այդպիսիք կան ( բջջային մեր նմուշի URL-ում): Առաջին օրինաչափության մեջ այն տեղադրվում է ավելի մեծ գրավող խմբի մեջ, որպեսզի բոլոր նման ենթատիրույթները ներառվեն արդյունահանման մեջ: Ենթադոմեյնը կարող է լինել 2-ից 255 նիշ երկարություն, հետևաբար՝ {2255} քանակական:
  • ([A-Za-z\d\-]{1,63}\.[A-Za-z] {2,24}) - խումբ է հավաքում երկրորդ մակարդակի տիրույթը ( ablebits ) և վերին մակարդակի տիրույթը ( com ) հանելու համար: Երկրորդ մակարդակի տիրույթի առավելագույն երկարությունը 63 նիշ է: Ներկայում գոյություն ունեցող ամենաերկար վերին մակարդակի տիրույթը պարունակում է 24 նիշ:
  • Կախված նրանից, թե որ կանոնավոր արտահայտություն է մուտքագրված A2-ում, ստորև բերված բանաձևը տարբեր արդյունքներ կտա.

    =AblebitsRegexExtract(A5, $A$2)

    Regex՝ ամբողջական տիրույթի անունը հանելու համար բոլոր ենթադոմեյններով. 48>

    Ահա թե ինչպես կարելի է հանել տեքստի մասերը Excel-ում՝ օգտագործելով կանոնավոր արտահայտություններ: Շնորհակալ եմ կարդալու համար և անհամբեր սպասում եմ ձեզ հաջորդ շաբաթ մեր բլոգում տեսնելու համար:

    Հասանելի ներբեռնումներ

    Excel Regex Extract օրինակներ (.xlsm ֆայլ)

    Ultimate Suite փորձնական տարբերակ (.exe ֆայլ)

    >\b(0?[0-9]matches.Count - 1 text_matches(matches_index, 0) = matches.Item(match_index) Next matches_index RegExpExtract = text_matches Այլ RegExpExtract = matches.Item(instance_num - 1) End If End If Exit Function ErrHandl: ReguexElnal:

    Եթե դուք քիչ փորձ ունեք VBA-ի հետ, օգտատիրոջ քայլ առ քայլ ուղեցույցը կարող է օգտակար լինել. Ինչպես տեղադրել VBA կոդը Excel-ում:

    Նշում: Որպեսզի ֆունկցիան աշխատի, համոզվեք, որ ձեր ֆայլը պահեք որպես մակրո-միացված աշխատանքային գրքույկ (.xlsm):

    RegExpExtract շարահյուսություն

    RegExpExtract ֆունկցիան որոնում է մուտքային տողում կանոնավոր արտահայտությանը համապատասխանող արժեքների համար և հանում մեկ կամ բոլոր համընկնումները:

    Ֆունկցիան ունի հետևյալ շարահյուսությունը: :

    RegExpExtract(տեքստ, օրինաչափություն, [instance_num], [match_case])

    Որտեղ՝

    • Text (պահանջվում է) - որոնելու համար տեքստային տողը:
    • Pattern (պահանջվում է) - կանոնավոր արտահայտություն, որը համապատասխանում է: Երբ ուղղակիորեն տրվում է բանաձևով, նախշը պետք է փակցվի կրկնակի չակերտների մեջ:
    • Instance_num (ըստ ցանկության) - սերիական համար, որը ցույց է տալիս, թե որ օրինակը պետք է հանել: Եթե ​​բաց թողնված է, վերադարձնում է բոլոր գտնված համընկնումները (կանխադրված):
    • Համապատասխանության_պատյան (ըստ ցանկության) - սահմանում է համապատասխանել կամ անտեսել տեքստի մեծատառերը: Եթե ​​ՃԻՇՏ է կամ բաց թողնված (կանխադրված), կատարվում է մեծատառերի համընկնում. եթե FALSE - մեծատառերի նկատմամբ զգայունություն չկա:

    Ֆունկցիան աշխատում է Excel 365, Excel 2021, Excel-ի բոլոր տարբերակներում2019, Excel 2016, Excel 2013 և Excel 2010:

    4 բան, որ դուք պետք է իմանաք RegExpExtract-ի մասին

    Ձեր Excel-ում ֆունկցիան արդյունավետ օգտագործելու համար կան մի քանի կարևոր բաներ, որոնք պետք է ուշադրություն դարձնել.

    1. Լռելյայնորեն ֆունկցիան վերադարձնում է բոլոր գտնված համընկնումները հարեւան բջիջներում, ինչպես ցույց է տրված այս օրինակում: Կոնկրետ երևույթ ստանալու համար համապատասխան թիվ տրամադրեք instance_num արգումենտին:
    2. Լռելյայնորեն ֆունկցիան case sensitive է : Մեծատառերի անհամապատասխանության համար սահմանեք համապատասխանի_դեպքի արգումենտը FALSE: VBA-ի սահմանափակումների պատճառով մեծատառերի նկատմամբ զգայուն կառուցվածքը (?i) չի աշխատի:
    3. Եթե վավեր օրինաչափություն չգտնվի , ֆունկցիան ոչինչ չի վերադարձնում (դատարկ տող):
    4. Եթե օրինաչափությունն անվավեր է , ապա #VALUE! սխալ է տեղի ունենում:

    Նախքան այս հատուկ գործառույթն օգտագործելը ձեր աշխատաթերթերում, դուք պետք է հասկանաք, թե ինչի է այն ընդունակ, այնպես չէ՞: Ստորև բերված օրինակները ներառում են մի քանի ընդհանուր օգտագործման դեպքեր և բացատրում են, թե ինչու է վարքագիծը կարող տարբերվել Dynamic Array Excel-ում (Microsoft 365 և Excel 2021) և ավանդական Excel-ում (2019 և ավելի հին տարբերակներ):

    Նշում: Out regex օրինակները գրված են հեքիաթային պարզ տվյալների հավաքածուների համար: Մենք չենք կարող երաշխավորել, որ դրանք անթերի կաշխատեն ձեր իրական աշխատաթերթերում: Նրանք, ովքեր ունեն ռեգեքսի փորձ, կհամաձայնեն, որ կանոնավոր արտահայտություններ գրելը անվերջ ճանապարհ է դեպի կատարելություն. գրեթե միշտ կա մի ճանապարհայն ավելի էլեգանտ է կամ ընդունակ է մշակել մուտքային տվյալների ավելի լայն շրջանակ:

    Ռեգեքս՝ տողից համարը հանելու համար

    Հետևելով «պարզից բարդ» դասավանդման հիմնական մաքսիմին՝ մենք կսկսենք շատ պարզ դեպքից՝ տողից թիվը հանելը:

    The Առաջին բանը, որ դուք պետք է որոշեք, այն է, թե որ թիվն առբերեք՝ առաջինը, վերջինը, կոնկրետ երևույթը կամ բոլոր թվերը: Հաշվի առնելով, որ \d նշանակում է 0-ից մինչև 9-ը ցանկացած թվանշան, իսկ + նշանակում է մեկ կամ մի քանի անգամ, մեր կանոնավոր արտահայտությունը ստանում է հետևյալ ձևը.

    Pattern : \d+

    Set instance_num դեպի 1, և դուք կստանաք ցանկալի արդյունքը.

    =RegExpExtract(A5, "\d+", 1)

    Որտեղ A5-ը սկզբնական տողն է:

    Հարմարության համար կարող եք մուտքագրել նախշը նախապես սահմանված բջիջում ($A$2) և կողպեք դրա հասցեն $ նշանով.

    =RegExpExtract(A5, $A$2, 1)

    Ստացեք վերջին թիվը

    Տողի վերջին թիվը հանելու համար , ահա օգտագործման օրինաչափությունը.

    Կաղապար : (\d+)(?!.*\d)

    Թարգմանված է մարդկային լեզվով , այն ասում է՝ գտեք մի թիվ, որին չի հաջորդում (որևէ տեղ, ոչ անմիջապես) որևէ այլ թիվ։ Դա արտահայտելու համար մենք օգտագործում ենք բացասական հայացք (?!.*\d), ինչը նշանակում է, որ օրինաչափության աջ կողմում չպետք է լինի այլ թվանշան (\d), անկախ նրանից, թե դրանից առաջ քանի նիշ կա:

    =RegExpExtract(A5, "(\d+)(?!.*\d)")

    Խորհուրդներ.

    • հատուկ երևույթ ստանալու համար օգտագործեք \d+ օրինաչափություն և համապատասխան սերիալ: instance_num համարը:
    • բոլոր թվերը հանելու բանաձևը քննարկվում է հաջորդ օրինակում:

    Regex` բոլոր համընկնումները հանելու համար

    Մեր օրինակը մի փոքր առաջ մղելով, ենթադրենք, որ ցանկանում եք ստանալ բոլոր թվերը մի տողից, ոչ թե մեկից:

    Ինչպես հիշում եք, հանված համընկնումների քանակը վերահսկվում է կամընտիր <1-ով:>instance_num արգումենտ: Լռելյայն բոլորը համընկնում են, այնպես որ դուք պարզապես բաց եք թողնում այս պարամետրը.

    =RegExpExtract(A2, "\d+")

    Բանաձևը հիանալի է աշխատում մեկ բջջի համար, բայց վարքագիծը տարբերվում է Dynamic Array Excel-ում և ոչ դինամիկ տարբերակներում:

    Excel 365 և Excel 2021

    Դինամիկ զանգվածների աջակցության շնորհիվ սովորական բանաձևն ինքնաբերաբար թափվում է այնքան բջիջներ, որքան անհրաժեշտ է՝ ցուցադրելու բոլոր հաշվարկված արդյունքները: Excel-ի առումով սա կոչվում է թափված միջակայք.

    Excel 2019 և ավելի ցածր

    Նախադինամիկ Excel-ում վերը նշված բանաձևը կվերադարձնի ընդամենը մեկ համընկնում: Բազմաթիվ համընկնումներ ստանալու համար հարկավոր է այն դարձնել զանգվածի բանաձև: Դրա համար ընտրեք մի շարք բջիջներ, մուտքագրեք բանաձևը և սեղմեք Ctrl + Shift + Enter՝ այն ավարտելու համար:

    Այս մոտեցման բացասական կողմն այն է, որ #N/A սխալները հայտնվում են «լրացուցիչ բջիջներում»: . Ցավոք սրտի, դրա դեմ ոչինչ չի կարելի անել (ոչ IFERROR-ը, ոչ IFNA-ն չեն կարող դա ուղղել, ավաղ):

    Բոլոր համընկնումները հանել մեկ բջիջում

    Տվյալների սյունակ մշակելիս վերը նշված մոտեցումն ակնհայտորեն չի աշխատի: Այս դեպքում իդեալական լուծումբոլոր համընկնումները կվերադարձնեին մեկ խցում: Դա անելու համար RegExpExtract-ի արդյունքները մատուցեք TEXTJOIN ֆունկցիային և առանձնացրեք դրանք ձեր նախընտրած ցանկացած սահմանազատիչով, ասեք ստորակետ և բացատ.

    =TEXTJOIN(", ", TRUE, RegExpExtract(A5, "\d+"))

    Նշում: Քանի որ TEXTJOIN ֆունկցիան հասանելի է միայն Excel-ում Microsoft 365-ի, Excel 2021-ի և Excel 2019-ի համար, բանաձևը չի աշխատի ավելի հին տարբերակներում:

    Regex՝ տեքստը տողից հանելու համար

    Տեքստի արդյունահանում Այբբենական տողը բավականին բարդ խնդիր է Excel-ում: Regex-ով այն դառնում է այնքան հեշտ, որքան կարկանդակը: Պարզապես օգտագործեք ժխտված դաս՝ համընկնելու այն ամենին, ինչը թվանշան չէ:

    Նախշը . [^\d]+

    Առանձին բջիջներում ենթատողեր ստանալու համար (թափման տիրույթ) , բանաձևը հետևյալն է.

    =RegExpExtract(A5, "[^\d]+")

    Բոլոր համընկնումները մեկ բջջի մեջ դուրս բերելու համար, տեղադրեք RegExpExtract ֆունկցիան TEXTJOIN-ում այսպես.

    =TEXTJOIN("", TRUE, RegExpExtract(A5, "[^\d]+"))

    Regex to էլփոստի հասցեն string-ից հանել

    Բազմաթիվ տարբեր տեղեկություններ պարունակող տողից էլփոստի հասցեն հանելու համար գրեք կանոնավոր արտահայտություն, որը կրկնօրինակում է էլփոստի հասցեի կառուցվածքը:

    Pattern . , ահա թե ինչ ենք ստանում.

    • [\w\.\-]+-ը օգտվողի անուն է, որը կարող է ներառել 1 կամ ավելի այբբենական նիշ, ընդգծում, կետեր և գծիկներ:
    • @ խորհրդանիշ
    • [A-Za-z0-9\.\-]+-ը տիրույթի անուն է, որը բաղկացած է մեծատառ և փոքրատառ տառերից, թվանշաններից, գծիկներից և կետերից (դեպքի դեպքումենթադոմեյնների): Այստեղ ընդգծումներն արգելված են, հետևաբար 3 տարբեր նիշերի հավաքածուներ (օրինակ՝ A-Z a-z և 0-9) օգտագործվում են \w-ի փոխարեն, որը համապատասխանում է ցանկացած տառի, թվի կամ ընդգծման:
    • \:[A-Za-z: ]{2,24}-ը վերին մակարդակի տիրույթ է: Բաղկացած է մի կետից, որին հաջորդում են մեծատառերը և փոքրատառերը: Վերին մակարդակի տիրույթների մեծ մասը 3 տառ է (օրինակ՝ .com .org, .edu և այլն), բայց տեսականորեն այն կարող է պարունակել 2-ից 24 տառ (ամենաերկար գրանցված TLD):

    Ենթադրելով, որ տողը A5-ում է, իսկ օրինակը A2-ում, էլփոստի հասցե հանելու բանաձևը հետևյալն է.

    =RegExpExtract(A5, $A$2)

    Regex՝ էլփոստից տիրույթը հանելու համար

    վերաբերում է էլփոստի տիրույթի արդյունահանմանը, առաջին միտքը, որ գալիս է մտքում, օգտագործում է գրավող խումբ՝ @ նիշին անմիջապես հաջորդող տեքստ գտնելու համար:

    Նախշը : @([A-Za-z0 -9\.\-]+\.[A-Za-z]{2,24})

    Մատուցեք այն մեր RegExp ֆունկցիայի մեջ.

    =RegExpExtract(A5, "@([A-Za-z0-9\.\-]+\.[A-Za-z]{2,24})")

    Եվ Դուք կստանաք հետևյալ արդյունքը.

    Դասական կանոնավոր արտահայտությունների դեպքում ցանկացած բան, որը դուրս է գրված խմբից, ներառված չէ արդյունահանման մեջ: Ոչ ոք չգիտի, թե ինչու է VBA RegEx-ն այլ կերպ աշխատում և գրավում է նաև «@»-ը: Դրանից ազատվելու համար դուք կարող եք հեռացնել առաջին նիշը արդյունքից՝ այն փոխարինելով դատարկ տողով:

    =REPLACE(RegExpExtract(A5, "@([a-z\d][a-z\d\-\.]*\.[a-z]{2,})", 1, FALSE), 1, 1, "")

    Հեռախոսահամարներ հանելու կանոնավոր արտահայտություն

    Հեռախոսահամարներ կարող է գրվել տարբեր ձևերով, այդ իսկ պատճառով գրեթե անհնար է բոլորի տակ աշխատող լուծում գտնել(\d{4}from string

    Ամսաթիվը հանելու կանոնավոր արտահայտությունը կախված է այն ձևաչափից, որով ամսաթիվը հայտնվում է տողի մեջ: Օրինակ՝

    Օրինակ՝ 1/1/21 կամ 01/01/2021 թվականներ հանելու համար ռեգեքսը հետևյալն է՝ \d{1,2}\/\d{1,2}\/(\d {4}հանգամանքներ։ Այնուամենայնիվ, դուք կարող եք գրել ձեր տվյալների բազայում օգտագործված բոլոր ձևաչափերը և փորձել դրանք համապատասխանեցնել:

    Այս օրինակի համար մենք պատրաստվում ենք ստեղծել ռեգեքս, որը կարտահանի հեռախոսահամարները հետևյալ ձևաչափերից որևէ մեկում.

    (123) 345-6789

    (123) 345 6789

    (123)3456789

    123- 345-6789

    123.345.6789

    123 345 6789

    1233456789

    Կաղապար ՝ \(?\d{3}[-\. \)]*\d{3}[-\: ]?\d{4}\b

    • Առաջին մասը \(?\d{3} համընկնում է զրոյի կամ մեկ բացման փակագծերի հետ, որին հաջորդում են երեք թվանշանները d{3}:
    • [-\. \)]* մասը նշանակում է քառակուսի փակագծերի ցանկացած նիշ, որը հայտնվում է 0 կամ ավելի անգամ՝ գծիկ, կետ, բացատ կամ փակող փակագիծ: ցանկացած գծիկ, կետ կամ բացատ [-\. ]? հայտնվում է 0 կամ 1 անգամ:
    • Դրանից հետո կա չորս թվանշանների խումբ \d{4}:
    • Վերջապես, կա բառի սահման \b, որը սահմանում է, որ հեռախոսահամարը մենք ենք որոնումը չի կարող ավելի մեծ թվի մաս լինել:

    Ամբողջական բանաձևը ստանում է հետևյալ ձևը. կեղծ դրական արդյունքներ, ինչպիսիք են 123) 456 7899 կամ (123 456 7899): Ստորև բերված տարբերակը շտկում է այս խնդիրները: Այնուամենայնիվ, այս շարահյուսությունն աշխատում է միայն VBA RegExp գործառույթներում, այլ ոչ դասական կանոնավոր արտահայտություններում:

    Նախշ : (\(\d{3}\)out for pulling out for pulling out for pulling out for two characters between pulling out for pulling out for pulling out for pulling out for two characters this pulling out for pulling out for pulling out for pulling out for two characters, կաշխատի նաև երկու տողերի միջև տեքստ հանելու համար:

    Օրինակ, ամեն ինչ ստանալու համար «թեստ 1»-ի և «թեստ 2»-ի միջև, օգտագործեք հետևյալ կանոնավոր արտահայտությունը:

    Նախշը . փորձարկում 1(.*?)թեստ 2

    Ամբողջական բանաձևը հետևյալն է.

    =AblebitsRegexExtract(A5, "test 1(.*?)test 2")

    Regex` տիրույթը URL-ից հանելու համար

    Նույնիսկ կանոնավոր արտահայտությունների դեպքում, URL-ներից տիրույթի անուններ հանելը աննշան խնդիր չէ: Հիմնական տարրը, որը կատարում է հնարքը, խմբերը չգրավելը: Կախված ձեր վերջնական նպատակից՝ ընտրեք ստորև բերված ռեգեքսներից մեկը:

    լրիվ տիրույթի անուն ներառյալ ենթադոմեյնները

    Pattern ստանալու համար: (?: https?\:

    Մայքլ Բրաունը նվիրված տեխնոլոգիայի էնտուզիաստ է, որը ձգտում է պարզեցնել բարդ գործընթացները՝ օգտագործելով ծրագրային գործիքները: Տեխնոլոգիական ոլորտում ավելի քան մեկ տասնամյակ փորձ ունենալով՝ նա կատարելագործել է իր հմտությունները Microsoft Excel-ում և Outlook-ում, ինչպես նաև Google Sheets-ում և Docs-ում: Մայքլի բլոգը նվիրված է իր գիտելիքներն ու փորձառությունը ուրիշների հետ կիսելուն՝ տրամադրելով հեշտ օգտագործվող խորհուրդներ և ձեռնարկներ՝ արտադրողականությունն ու արդյունավետությունը բարձրացնելու համար: Անկախ նրանից, թե դուք փորձառու մասնագետ եք, թե սկսնակ, Մայքլի բլոգը առաջարկում է արժեքավոր պատկերացումներ և գործնական խորհուրդներ՝ առավելագույն օգուտ քաղելու այս կարևոր ծրագրային գործիքներից: