Regex Excel-ում որոշակի նիշ կամ տեքստ հեռացնելու համար

  • Կիսվել Սա
Michael Brown
արգումենտը բաց է թողնված, բոլոր գտնված համընկնումները հեռացվում են: Կոնկրետ համընկնումը ջնջելու համար սահմանեք օրինակի համարը:

Ստորև նշված տողերում, ենթադրենք, որ ցանկանում եք ջնջել առաջին կարգի համարը: Բոլոր նման թվերը սկսվում են հեշ նշանով (#) և պարունակում են ուղիղ 5 նիշ։ Այսպիսով, մենք կարող ենք դրանք նույնականացնել՝ օգտագործելով այս ռեգեքսը.

Pattern : #\d{5}\b

Boundary \b բառը նշում է, որ համապատասխան ենթատողը չի կարող լինել. ավելի մեծ տողի մի մասը, ինչպիսին է #10000001:

Բոլոր համընկնումները հեռացնելու համար instance_num արգումենտը սահմանված չէ.

=RegExpReplace(A5, "#\d{5}\b", "")

Միայն առաջին դեպքը վերացնելու համար մենք instance_num արգումենտը սահմանեցինք 1:

=RegExpReplace(A5, "#\d{5}\b", "", 1)

Regex որոշ նիշեր հեռացնելու համար

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

Ձեր աշխատանքի մասնիկը կանոնավոր արտահայտություն ստեղծելն է և ծառայել այն ֆունկցիային :) Թույլ տվեք ցույց տալ, թե ինչպես դա անել գործնական օրինակով:

Ինչպես հեռացնել փակագծերում և փակագծերում տեքստը՝ օգտագործելով regex

Երկար տեքստային տողերում՝ քիչ կարևոր տեղեկատվություն հաճախ փակցված է [փակագծերում] և (փակագծերում): Ինչպե՞ս հեռացնել այդ անհամապատասխան մանրամասները՝ պահպանելով բոլոր մյուս տվյալները:

Իրականում, մենք արդեն ստեղծել ենք նմանատիպ ռեգեքս՝ html պիտակները ջնջելու համար, այսինքն՝ տեքստը անկյունային փակագծերում: Ակնհայտ է, որ նույն մեթոդները կաշխատեն նաև քառակուսի և կլոր փակագծերի դեպքում:

Նախշը .

Երբևէ մտածե՞լ եք, թե որքան հզոր կլինի Excel-ը, եթե ինչ-որ մեկը կարողանա հարստացնել իր գործիքակազմը կանոնավոր արտահայտություններով: Մենք ոչ միայն մտածել ենք, այլև աշխատել դրա վրա :) Եվ հիմա, դուք կարող եք ավելացնել այս հրաշալի RegEx ֆունկցիան ձեր սեփական աշխատանքային գրքույկներում և կարճ ժամանակում ջնջել օրինաչափությանը համապատասխան ենթատողերը:

Անցյալ շաբաթ մենք նայեցինք ինչպես օգտագործել կանոնավոր արտահայտություններ Excel-ում տողերը փոխարինելու համար: Դրա համար մենք ստեղծեցինք սովորական Regex Replace ֆունկցիա: Ինչպես պարզվեց, ֆունկցիան դուրս է գալիս իր հիմնական կիրառությունից և կարող է ոչ միայն փոխարինել տողերը, այլև հեռացնել դրանք: Ինչպե՞ս կարող էր դա լինել: Excel-ի առումով արժեքի հեռացումը ոչ այլ ինչ է, քան այն դատարկ տողով փոխարինելը, մի բան, որում մեր Regex ֆունկցիան շատ լավ է:

VBA RegExp ֆունկցիան Excel-ում ենթատողերը հեռացնելու համար

Ինչպես բոլորս գիտենք, Excel-ում սովորական արտահայտությունները լռելյայնորեն չեն աջակցվում: Դրանք միացնելու համար դուք պետք է ստեղծեք ձեր սեփական օգտատիրոջ կողմից սահմանված գործառույթը: Լավ նորությունն այն է, որ նման գործառույթն արդեն գրված է, փորձարկված և պատրաստ է օգտագործման: Պարզապես պետք է պատճենեք այս կոդը, տեղադրեք այն ձեր VBA խմբագրիչում և այնուհետև պահեք ձեր ֆայլը որպես մակրո-միացված աշխատանքային գրքույկ (.xlsm):

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

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

Առաջին երեք արգումենտները պարտադիր են, վերջին երկուսը պարտադիր չեն:

Որտեղ՝

  • Text - որոնման համար նախատեսված տեքստային տողըհնարավոր է այնքան ժամանակ, քանի դեռ չի գտնում փակող փակագիծը:

Որ օրինաչափությունն էլ ընտրեք, արդյունքը բացարձակապես նույնն է լինելու:

Օրինակ՝ հեռացնել բոլոր html պիտակները A5 տողից և թողնել տեքստը, բանաձևը հետևյալն է.

=RegExpReplace(A5, "]*>", "")

Կամ կարող եք օգտագործել ծույլ քանակականը, ինչպես ցույց է տրված սքրինշոթում.

Այս լուծումը հիանալի աշխատում է մեկ տեքստ (տողեր 5 - 9): Բազմաթիվ տեքստերի համար (10-12 տող) արդյունքները կասկածելի են՝ տարբեր թեգերից տեքստերը միաձուլվում են մեկի մեջ: Սա ճի՞շտ է, թե՞ ոչ։ Վախենում եմ, դա այն չէ, որ հեշտությամբ կարելի է որոշել, ամեն ինչ կախված է ցանկալի արդյունքի ձեր ըմբռնումից: Օրինակ, B11-ում ակնկալվում է «A1» արդյունքը. երբ B10-ում, դուք կարող եք ցանկանալ, որ «data1»-ը և «data2»-ն առանձնացվեն բացատով:

HTML պիտակները հեռացնելու և մնացած տեքստերը բացատներով առանձնացնելու համար կարող եք շարունակել հետևյալ կերպ. 30>

  • Փոխարինեք պիտակները բացատներով « », ոչ դատարկ տողերով>Կտրեք առաջատար և հետին բացատները.
  • =TRIM(RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " "))

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

    Ablebits Regex Remove Tool

    Եթե հնարավորություն եք ունեցել օգտագործելու մեր Ultimate Suite-ը Excel-ի համար, հավանաբար արդեն հայտնաբերել եք նոր Regex գործիքները, որոնք ներկայացվել են վերջին թողարկումով: .NET-ի վրա հիմնված Regex գործառույթների գեղեցկությունն այն է, որ նրանք, առաջին հերթին, աջակցում են լիարժեք կանոնավոր արտահայտություններին: Հեռացնել տարբերակը և սեղմել Հեռացնել :

    Արդյունքները որպես բանաձևեր, այլ ոչ թե արժեքներ ստանալու համար ընտրեք Տեղադրեք որպես բանաձև վանդակը:

    A2:A5 տողերից փակագծերում տեքստը հեռացնելու համար մենք կարգավորում ենք կարգավորումները: հետևյալ կերպ.

    Արդյունքում AblebitsRegexRemove ֆունկցիան տեղադրվում է նոր սյունակում՝ ձեր սկզբնական տվյալների կողքին:

    Ֆունկցիան կարող է նաև ուղղակիորեն մուտքագրվել բջիջում ստանդարտ Տեղադրել ֆունկցիան երկխոսության տուփի միջոցով, որտեղ այն դասակարգված է AblebitsUDFs ներքո:

    Քանի որ AblebitsRegexRemove -ը նախատեսված է տեքստը հեռացնելու համար, այն պահանջում է ընդամենը երկու արգումենտ՝ սկզբնաղբյուրի տողը և ռեգեքսը: Երկու պարամետրերը կարող են ուղղակիորեն սահմանվել բանաձևով կամ տրամադրվել բջջային հղումների տեսքով: Անհրաժեշտության դեպքում, այս հատուկ գործառույթը կարող է օգտագործվել ցանկացած բնիկ գործառույթի հետ միասին:

    Օրինակ, ստացված տողերում լրացուցիչ բացատները կտրելու համար կարող եք օգտագործել TRIM ֆունկցիան որպես փաթաթում.

    =TRIM(AblebitsRegexRemove(A5, $A$2)) :

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

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

    Հեռացրեք տողերը՝ օգտագործելով regex - օրինակներ (.xlsm ֆայլ)

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

    in.
  • Pattern - կանոնավոր արտահայտությունը, որը պետք է որոնել:
  • Փոխարինում - տեքստը, որով պետք է փոխարինվի: Նմուշին համապատասխանող ենթատողերը հանելու համար , փոխարինելու համար օգտագործեք դատարկ տող (""):
  • Instance_num (ըստ ցանկության) - օրինակ փոխարինել. Եթե ​​բաց թողնվի, բոլոր գտնված համընկնումները կփոխարինվեն (կանխադրված):
  • Համապատասխանության_պատյան (ըստ ցանկության) - Բուլյան արժեք, որը ցույց է տալիս՝ համընկնել կամ անտեսել տեքստի մեծատառերը: Մեծատառերի նկատմամբ զգայուն համընկնման համար օգտագործեք TRUE (կանխադրված); մեծատառերի համար՝ FALSE:
  • Լրացուցիչ տեղեկությունների համար տե՛ս RegExpReplace ֆունկցիան:

    Խորհուրդ: Պարզ դեպքերում, Excel-ի բանաձևերով կարող եք հեռացնել հատուկ նիշեր կամ բառեր բջիջներից: Բայց կանոնավոր արտահայտությունները դրա համար շատ ավելի շատ տարբերակներ են տալիս:

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

    Ինչպես նշվեց վերևում, օրինակին համապատասխանող տեքստի մասերը հեռացնելու համար դուք պետք է դրանք փոխարինեք: դատարկ թելով։ Այսպիսով, ընդհանուր բանաձևը ստանում է հետևյալ ձևը.

    RegExpReplace(տեքստ, օրինակ, «», [instance_num], [match_case])

    Ստորև բերված օրինակները ցույց են տալիս այս հիմնական հայեցակարգի տարբեր իրականացումներ:

    Հեռացնել բոլոր համընկնումները կամ կոնկրետ համընկնում

    RegExpReplace ֆունկցիան նախատեսված է գտնելու բոլոր ենթատողերը, որոնք համապատասխանում են տվյալ ռեգեքսին: Հեռացնել երևույթները վերահսկվում են 4-րդ կամընտիր արգումենտով, որը կոչվում է instance_num :

    Լռելյայն է «բոլոր համընկնումները», երբ instance_num կապակցման օպերատոր (&) և տեքստային գործառույթներ, ինչպիսիք են RIGHT, MID և LEFT:

    Օրինակ, բոլոր հեռախոսահամարները (123) 456-7890 ձևաչափով գրելու համար, բանաձևը հետևյալն է.

    ="("&LEFT(B5, 3)&") "&MID(B5, 4, 3)&"-"&RIGHT(B5, 4)

    Որտեղ B5-ը RegExpReplace ֆունկցիայի արդյունքն է:

    Հեռացրեք հատուկ նիշերը regex-ի միջոցով

    Մեր ձեռնարկներից մեկում, մենք նայեցինք, թե ինչպես հեռացնել անցանկալի նիշերը Excel-ում՝ օգտագործելով ներկառուցված և հատուկ գործառույթներ: Կանոնավոր արտահայտությունները շատ են հեշտացնում ամեն ինչ: Ջնջելու համար բոլոր նիշերը ցուցակագրելու փոխարեն, պարզապես նշեք նրանց, որոնք ցանկանում եք պահպանել :)

    Նշման հիմքում ընկած է ժխտված նիշերի դասերը - նիշերի դասի ներսում դրվում է կարետ [^ ] համապատասխանելու ցանկացած նիշ, որը ՉԻ փակագծերում: + քանակականը ստիպում է նրան հաջորդական նիշերը դիտարկել որպես մեկ համընկնում, այնպես որ փոխարինումը կատարվի համապատասխան ենթատողի համար, այլ ոչ թե յուրաքանչյուր առանձին նիշի:

    Կախված ձեր կարիքներից, ընտրեք հետևյալ ռեգեքսներից մեկը:

    ոչ այբբենական նիշերը հեռացնելու համար, այսինքն՝ բոլոր նիշերը, բացի տառերից և թվերից. +

    Բոլոր նիշերը բացի տառերից , նիշերից և բացատներից մաքրելու համար.

    Նշան : [^0-9a-zA-Z ]+

    Բոլոր նիշերը բացի տառերից , նիշերից և ընդգծում ջնջելու համար կարող եք օգտագործել \ W, որը նշանակում է ցանկացած նիշ, որը այբբենական նշան չէ կամընդգծում.

    Նախշեր : \W+

    Եթե ցանկանում եք պահել որոշ այլ նիշեր , օրինակ. Կետադրական նշանները դրեք փակագծերի մեջ:

    Օրինակ՝ տառից, թվանշանից, կետից, ստորակետից կամ բացատից բացի որևէ այլ նիշ հանելու համար օգտագործեք հետևյալ ռեգեքսը.

    Նախշը . [^0-9a-zA-Z\., ]+

    Սա հաջողությամբ վերացնում է բոլոր հատուկ նիշերը, սակայն լրացուցիչ բացատ է մնում:

    Սա շտկելու համար դուք կարող եք տեղադրել վերը նշված ֆունկցիան մեկ այլ ֆունկցիայի մեջ, որը փոխարինում է մի քանի բացատներ մեկ բացատ նիշով:

    =RegExpReplace(RegExpReplace(A5,$A$2,""), " +", " ")

    Կամ պարզապես օգտագործեք բնիկ TRIM ֆունկցիան նույն էֆեկտով: :

    =TRIM(RegExpReplace(A5, $A$2, ""))

    Regex՝ ոչ թվային նիշերը հեռացնելու համար

    Տողից բոլոր ոչ թվային նիշերը ջնջելու համար կարող եք օգտագործել կա՛մ այս երկար բանաձևը, կա՛մ ներքևում թվարկված շատ պարզ ռեգեքսներից մեկը:

    Համապատասխանեցրեք ցանկացած նիշ, որը թվանշան չէ.

    Pattern : \D+

    Հեռացրեք ոչ թվային նիշերը՝ օգտագործելով ժխտվող դասերը.

    Նախշը : [^0-9]+

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

    Խորհուրդ. Եթե ​​ձեր նպատակն է հեռացնել տեքստը և մնացած թվերը թափել առանձին բջիջների մեջ կամ տեղադրել դրանք բոլորը մեկ բջիջում՝ առանձնացված որոշակի սահմանազատիչով, ապա օգտագործեք RegExpExtract ֆունկցիան, ինչպես բացատրված է «Ինչպես հանել թվերը տողից՝ օգտագործելով կանոնավոր արտահայտություններ» բաժնում:

    Regex՝ բացատից հետո ամեն ինչ հեռացնելու համար

    Բացատից հետո ամեն ինչ ջնջելու համար օգտագործեք բացատ ( ) կամբացատ (\s) նիշ՝ առաջին բացատը գտնելու համար և .*՝ դրանից հետո ցանկացած նիշին համապատասխանելու համար:

    Եթե ունեք մեկ տողով տողեր, որոնք պարունակում են միայն նորմալ բացատներ (արժեքը 32 7-բիթանոց ASCII համակարգում) , իրականում կարևոր չէ, թե ստորև նշված ռեգեքսներից որն եք օգտագործում: Բազմատող տողերի դեպքում դա իսկապես տարբերություն է:

    Ամեն ինչ հեռացնելու համար բացատ նիշից հետո , օգտագործեք այս ռեգեքսը.

    Pattern : " .*"

    =RegExpReplace(A5, " .*", "")

    Այս բանաձևը կհեռացնի ամեն ինչ յուրաքանչյուր տողում առաջին բացատից հետո: Որպեսզի արդյունքները ճիշտ ցուցադրվեն, համոզվեք, որ միացնեք Wrap Text-ը:

    Ամեն ինչ բացատից հետո (ներառյալ բացատ, ներդիր, փոխադրման վերադարձ և նոր տող) հեռացնելու համար, ռեգեքսը է.

    Նախշը : \s.*

    =RegExpReplace(A5, "\s.*", "")

    Որովհետև \s-ը համապատասխանում է մի քանի տարբեր բացատների տեսակների, ներառյալ նոր տողը (\n), այս բանաձևը ջնջում է ամեն ինչ բջջի առաջին բացատից հետո, անկախ նրանից, թե քանի տող կա դրա մեջ:

    Ռեգեքս՝ որոշակի տեքստից հետո հեռացնելու համար: նիշ

    Օգտագործելով նախորդ օրինակի մեթոդները, դուք կարող եք ջնջել տեքստը ձեր նշած ցանկացած նիշից հետո:

    Յուրաքանչյուր տող առանձին մշակելու համար.

    Ընդհանուր օրինակ ՝ char.*

    Մեկ տող տողերում սա կհեռացնի ամեն ինչ char -ից հետո: Բազմատող տողերում յուրաքանչյուր տող կմշակվի առանձին, քանի որ VBA Regex-ի համով կետը (.) համապատասխանում է ցանկացած նիշի՝ բացառությամբ նորի:^ տողի սկիզբը, մենք համընկնում ենք զրոյական կամ ավելի ոչ բացատ նիշերի [^ ]*, որոնց անմիջապես հաջորդում է մեկ կամ մի քանի բացատ « +»: Վերջին մասը ավելացվում է արդյունքներում հնարավոր առաջատար բացատները կանխելու համար:

    Տեքստը յուրաքանչյուր տողում առաջին բացատից առաջ հեռացնելու համար բանաձևը գրվում է լռելյայն «բոլոր համընկնում» ռեժիմում ( instance_num բաց թողնված).

    =RegExpReplace(A5, "^[^ ]* +", "")

    Տեքստը ջնջելու համար առաջին տողում առաջին բացատից առաջ և մնացած բոլոր տողերը անփոփոխ թողնելու համար, instance_num արգումենտը սահմանվում է 1:

    =RegExpReplace(A5, "^[^ ]* +", "", 1)

    Regex՝ ամեն ինչ նախքան նիշը հեռացնելու համար

    Ողջ տեքստը որոշակի նիշից առաջ հեռացնելու ամենահեշտ ձևը ռեգեքսի օգտագործումն է։ այսպես.

    Ընդհանուր օրինաչափություն : ^[^char]*char

    Մարդկային լեզվով թարգմանված ասվում է. , համընկնում է 0 կամ ավելի նիշից, բացառությամբ char [^char]*-ի մինչև char -ի առաջին դեպքը։

    Օրինակ՝ ջնջել ամբողջ տեքստը առաջին երկու կետից առաջ։ , օգտագործեք այս կանոնավոր արտահայտությունը.

    Pattern : ^[^:]*:

    Արդյունքներում առաջատար բացատներից խուսափելու համար ավելացրեք \s* բացատ նիշը: վերջ: Սա կհեռացնի ամեն ինչ g առաջին երկու կետից առաջ և կտրեք բոլոր բացատները անմիջապես դրանից հետո.

    Նախշը .

    Հուշում. Բացի սովորական արտահայտություններից, Excel-ն ունի տեքստը ըստ դիրքի կամ համընկնման հեռացնելու իր սեփական միջոցները: Սովորելու համար, թե ինչպես կատարել առաջադրանքը բնիկ բանաձևերով,խնդրում ենք տե՛ս Ինչպես հեռացնել տեքստը Excel-ում նիշից առաջ կամ հետո:

    Regex՝ ամեն ինչ հեռացնելու համար, բացառությամբ

    Տողից բոլոր նիշերը վերացնելու համար, բացառությամբ նրանց, որոնք ցանկանում եք պահել, օգտագործեք ժխտված նիշերի դասերը:

    Օրինակ, բոլոր նիշերը, բացառությամբ փոքրատառերից հեռացնելու համար: և կետերը, ռեգեքսը հետևյալն է.

    Pattern : [^a-z\.]+

    Իրականում մենք կարող ենք անել առանց + քանակի այստեղ, քանի որ մեր ֆունկցիան փոխարինում է բոլորին: գտել են համընկնումներ: Քանակիչն այն մի փոքր ավելի արագ է դարձնում. յուրաքանչյուր առանձին նիշ մշակելու փոխարեն, դուք փոխարինում եք ենթատողը:

    =RegExpReplace(A5, "[^a-z\.]+", "")

    Regex Excel-ում html պիտակները հեռացնելու համար:

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

    Հաշվի առնելով, որ html պիտակները միշտ տեղադրվում են անկյունային փակագծերում, դուք կարող եք դրանք գտնել՝ օգտագործելով հետևյալ ռեգեքսներից մեկը:

    Ժխտված դաս.

    Նշան : ]*>

    Այստեղ մենք համընկնում ենք բացվող անկյունային փակագծով, որին հաջորդում է զրոյական կամ ավելի ցանկացած նիշի երևույթ, բացառությամբ փակման անկյունային փակագիծ [^>]* մինչև մոտակա փակման անկյան փակագիծը:

    Անբան որոնում.

    Pattern :

    Ահա, մենք համընկնում ենք ամեն ինչ՝ սկսած առաջին բացման փակագծից մինչև առաջին փակման փակագիծը: Հարցական նշանը ստիպում է .*-ին համապատասխանեցնել այնքան քիչ նիշտող։

    Բոլոր տողերը որպես մեկ տող մշակելու համար՝

    Ընդհանուր օրինակ ՝ char(.

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