Агуулгын хүснэгт
Доорх мөрөнд та эхний дарааллын дугаарыг устгахыг хүсэж байна гэж бодъё. Ийм бүх тоо нь хэш тэмдгээр (#) эхэлж, яг 5 цифрээс бүрдэнэ. Тиймээс бид эдгээр регексийг ашиглан тэдгээрийг тодорхойлж болно:
Загвар : #\d{5}\b
Хязгаар \b нь тохирох дэд мөр байж болохгүйг заадаг. #10000001 гэх мэт том мөрийн хэсэг.
Бүх тохирлыг арилгахын тулд жишээний_тоо аргумент тодорхойлогдоогүй:
=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 функц маш сайн байдаг!
Excel дээрх дэд мөрүүдийг арилгах VBA RegExp функц
Бид бүгд мэдэж байгаачлан ердийн илэрхийлэл нь Excel-д анхдагчаар дэмжигддэггүй. Тэдгээрийг идэвхжүүлэхийн тулд та өөрийн хэрэглэгчийн тодорхойлсон функцийг үүсгэх хэрэгтэй. Сайн мэдээ гэвэл ийм функц аль хэдийн бичигдсэн, туршиж үзсэн, ашиглахад бэлэн болсон байна. Та энэ кодыг хуулж аваад VBA засварлагчдаа буулгаад дараа нь файлаа макро идэвхжүүлсэн ажлын ном (.xlsm) болгон хадгалахад л болно.
Функц нь дараах синтакс:
RegExpReplace(текст, загвар, солих, [жишээ_тоо], [тохируулах_цэрэг])Эхний гурван аргумент шаардлагатай, сүүлийн хоёр нь нэмэлт.
Хаана:
- Текст - хайх текстийн мөрЭнэ нь хаах хаалт олох хүртэл боломжтой.
Та аль ч загварыг сонгосон үр дүн нь яг ижил байх болно.
Жишээ нь, A5 дахь стрингээс бүх html хаягуудыг устгаад текст үлдээх бол, томъёо нь:
=RegExpReplace(A5, "]*>", "")
Эсвэл та дэлгэцийн агшинд үзүүлсэн шиг залхуу хэмжигчийг ашиглаж болно:
Энэ шийдэл нь нэг текст (мөр 5 - 9). Олон текстийн хувьд (мөр 10 - 12) үр дүн нь эргэлзээтэй байдаг - өөр өөр шошготой текстүүдийг нэг болгон нэгтгэдэг. Энэ зөв үү, үгүй юу? Би айж байна, энэ нь амархан шийдэгдэх зүйл биш - бүх зүйл таны хүссэн үр дүнгийн талаархи ойлголтоос хамаарна. Жишээлбэл, B11-д "A1" үр дүн хүлээгдэж байна; B10 дээр та "өгөгдөл1" болон "өгөгдөл2"-г хоосон зайгаар тусгаарлахыг хүсэж болох юм.
HTML хаягуудыг устгаж, үлдсэн бичвэрүүдийг хоосон зайгаар тусгаарлахын тулд та дараах байдлаар үргэлжлүүлж болно:
- Тагуудыг хоосон мөр биш " " зайгаар солино:
=RegExpReplace(A5, "]*>", " ")
- Олон хоосон зайг нэг хоосон тэмдэгт болгон багасгах:
=RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " ")
- Эхлэх болон арын зайг таслах:
=TRIM(RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " "))
Үр дүн нь иймэрхүү харагдах болно:
Ablebits Regex Remove Tool
Хэрэв танд манай Excel-д зориулсан Ultimate Suite-г ашиглах боломж олдсон бол саяхан гарсан шинэ Regex хэрэгслийг аль хэдийн олж мэдсэн байх. Эдгээр .NET дээр суурилсан Regex функцүүдийн давуу тал нь нэгдүгээрт, ердийн илэрхийлэлийг бүрэн дүүрэн дэмждэгт оршино Устгах сонголтыг хийгээд Устгах дээр дарна уу.
Үр дүнг утгыг биш томьёо болгон авахын тулд Томъёо болгон оруулах нүдийг сонго.
A2:A5 дахь мөрүүдээс хаалт доторх текстийг хасахын тулд бид тохиргоог хийнэ. дараах байдлаар:
Үр дүнд нь AblebitsRegexRemove функцийг таны анхны өгөгдлийн хажууд шинэ баганад оруулна.
Мөн уг функцийг AblebitsUDFs -д ангилагдсан стандарт Функц оруулах харилцах цонхоор дамжуулан нүдэнд шууд оруулж болно.
AblebitsRegexRemove нь текстийг устгахад зориулагдсан тул энэ нь зөвхөн хоёр аргумент шаарддаг - эх мөр ба regex. Хоёр параметрийг томъёогоор шууд тодорхойлж эсвэл эсийн лавлагаа хэлбэрээр өгч болно. Шаардлагатай бол энэ тусгай функцийг ямар ч эх функцтэй хамт ашиглаж болно.
Жишээ нь, үүссэн мөрүүдийн нэмэлт зайг багасгахын тулд та TRIM функцийг боодол болгон ашиглаж болно:
=TRIM(AblebitsRegexRemove(A5, $A$2))
Тэгж Excel дээр ердийн илэрхийлэл ашиглан мөрүүдийг арилгах арга юм. Уншиж байгаад баярлалаа, ирэх долоо хоногт манай блог дээр уулзахыг тэсэн ядан хүлээж байна!
Боломжтой татан авалтууд
Жишээ нь (.xlsm файл)
Ultimate Suite. - туршилтын хувилбар (.exe файл)
in.Дэлгэрэнгүй мэдээллийг RegExpReplace функцээс үзнэ үү.
Зөвлөмж. Энгийн тохиолдолд та Excel-ийн томьёо ашиглан нүднээсээ тодорхой тэмдэгтүүд эсвэл үгсийг устгаж болно. Гэхдээ ердийн хэллэгүүд нь үүнд илүү олон сонголтыг өгдөг.
Энгийн хэллэгийг ашиглан мөрүүдийг хэрхэн устгах вэ - жишээнүүд
Дээр дурьдсанчлан загварт тохирсон текстийн хэсгийг хасахын тулд тэдгээрийг солих хэрэгтэй. хоосон мөртэй. Тиймээс ерөнхий томьёо нь ийм хэлбэртэй байна:
RegExpReplace(текст, загвар, "", [жишээ_тоо], [тохируулах_цэрэг])Доорх жишээнүүд нь энэхүү үндсэн ойлголтын янз бүрийн хэрэгжилтийг харуулж байна.
Устгах бүх таарч эсвэл тодорхой тохирох
RegExpReplace функц нь өгөгдсөн регекст тохирох бүх дэд мөрүүдийг олоход зориулагдсан. Аль тохиолдлуудыг арилгахыг жишээний_тоо гэж нэрлэсэн 4-р нэмэлт аргументаар удирддаг.
Өгөгдмөл нь "бүх тохирч байна" - жишээний_тоо үед.холбох оператор (&) болон БАРУУН, ДУНД, ЗҮҮН гэх мэт Текстийн функцууд.
Жишээ нь, бүх утасны дугаарыг (123) 456-7890 форматаар бичихийн тулд дараах томьёо:
="("&LEFT(B5, 3)&") "&MID(B5, 4, 3)&"-"&RIGHT(B5, 4)
Үүнд B5 нь RegExpReplace функцийн гаралт юм.
Тусгай тэмдэгтүүдийг regex ашиглан устгана
Манай хичээлүүдийн аль нэгэнд, Бид Excel-д суулгасан болон өөрчлөн тохируулсан функцуудыг ашиглан хүсээгүй тэмдэгтүүдийг хэрхэн устгах талаар авч үзсэн. Тогтмол илэрхийлэл нь бүх зүйлийг илүү хялбар болгодог! Устгах тэмдэгтүүдийг жагсаахын оронд хадгалахыг хүсэж буй тэмдэгтүүдийг л зааж өгөөрэй :)
Загвар нь үгүйцсэн тэмдэгтийн ангиуд дээр суурилагдсан - тэмдэгтийн анги дотор тэмдэгт тэмдэгт суулгасан байна [^ ] нь хаалтанд БИШ нэг тэмдэгтийг тааруулах. + хэмжигч нь дараалсан тэмдэгтүүдийг нэг тохирол гэж үзэхийг албаддаг бөгөөд ингэснээр тэмдэгт тус бүрд бус тохирох дэд мөрт солигдох болно.
Таны хэрэгцээ шаардлагаас хамааран дараах регексүүдийн аль нэгийг сонгоно уу.
үсэг, тоон бус тэмдэгтүүдийг, өөрөөр хэлбэл үсэг, цифрээс бусад бүх тэмдэгтүүдийг устгахын тулд:
Загвар : [^0-9a-zA-Z] +
Үсэг , цифр ба хоосон зай -аас бусад тэмдэгтүүдийг цэвэрлэхийн тулд:
Загвар : [^0-9a-zA-Z ]+
Үсэг , цифр болон доод зураас -аас бусад тэмдэгтүүдийг устгахын тулд та \ W нь үсэг, тоон тэмдэгт биш аливаа тэмдэгтийг илэрхийлдэгдоогуур зураас:
Загвар : \W+
Хэрэв та бусад тэмдэгтүүдийг үлдээхийг , жишээ нь. цэг таслал, хаалтанд оруулна.
Жишээ нь үсэг, цифр, цэг, таслал, зайнаас бусад тэмдэгтийг хасахын тулд дараах регексийг ашиглана:
Загвар : [^0-9a-zA-Z\., ]+
Энэ нь бүх тусгай тэмдэгтүүдийг амжилттай арилгасан ч нэмэлт хоосон зай үлдэнэ.
Үүнийг засахын тулд та дээрх функцийг нэг зайны тэмдэгтээр олон орон зайг орлуулдаг өөр функцэд байрлуулж болно.
=RegExpReplace(RegExpReplace(A5,$A$2,""), " +", " ")
Эсвэл зүгээр л ижил нөлөө бүхий үндсэн TRIM функцийг ашиглана уу. :
=TRIM(RegExpReplace(A5, $A$2, ""))
Тоон бус тэмдэгтүүдийг арилгах регекс
Мөрөөс бүх тоон бус тэмдэгтүүдийг устгахын тулд та ашиглаж болно. энэ урт томьёо эсвэл доор жагсаасан маш энгийн регексуудын аль нэг нь.
Цифр биш байгаа тэмдэгтүүдийг тааруулна уу:
Загвар : \D+
Үгүйсгэсэн ангиудыг ашиглан тоон бус тэмдэгтүүдийг тайлах:
Загвар : [^0-9]+
Загвар : [^\d] +
Зөвлөгөө. Хэрэв таны зорилго бол текстийг устгаж, үлдсэн тоог тус тусад нь нүднүүдэд асгах эсвэл бүгдийг нь тодорхой зааглагчаар тусгаарласан нэг нүдэнд байрлуулах юм бол ердийн илэрхийлэл ашиглан мөрнөөс тоо гаргаж авах талаар тайлбарласны дагуу RegExpExtract функцийг ашиглана уу.
Зайны дараа бүх зүйлийг арилгахын тулд regex
Хоосон зайны дараа бүгдийг арилгахын тулд зай ( ) эсвэл аль нэгийг ашиглана уу.эхний хоосон зайг олохын тулд хоосон зай (\s) тэмдэгт ба .* тэмдэгт нь түүний араас ямар нэгэн тэмдэгттэй таарч байна.
Хэрэв танд ердийн хоосон зай агуулсан нэг мөрт мөр байгаа бол (7 битийн ASCII систем дэх утга 32) , доорх регексүүдийн алийг нь ашиглах нь огт хамаагүй. Олон мөрт мөртүүдийн хувьд энэ нь өөрчлөлтийг бий болгодог.
зайны тэмдэгтийн дараа байгаа бүх зүйлийг арилгахын тулд энэ regex-г ашиглана уу:
Загвар : " .*"
=RegExpReplace(A5, " .*", "")
Энэ томъѐо нь мөр бүрийн эхний хоосон зайны дараах бүх зүйлийг арилгана. Үр дүнг зөв харуулахын тулд Текстийг боох функцийг асаахаа мартуузай.
Хоосон зайны дараа бүх зүйлийг (зай, таб, тэрэгний буцаах болон шинэ мөр зэрэг) арилгахын тулд regex нь:
Загвар : \s.*
=RegExpReplace(A5, "\s.*", "")
Учир нь \s нь шинэ мөр<зэрэг хэд хэдэн төрлийн хоосон зайтай таарч байна. 9> (\n), энэ томьёо нь нүдэнд хичнээн мөр байсан ч эхний хоосон зайны дараа бүх зүйлийг устгадаг.
Тодорхойлолтын дараа текстийг устгах регекс. тэмдэгт
Өмнөх жишээний аргуудыг ашигласнаар та өөрийн зааж өгсөн тэмдэгтийн араас текстийг устгаж болно.
Мөр бүрийг тусад нь зохицуулахын тулд:
Ерөнхий загвар : char.*
Нэг мөрт мөрүүдэд энэ нь char -ын дараа бүх зүйлийг устгах болно. VBA Regex амт дотор цэг (.) нь шинэ тэмдэгтээс бусад тэмдэгттэй таарч байгаа тул олон мөрт мөрөнд мөр бүрийг тус тусад нь боловсруулна.Мөрийн эхлэл ^ бол бид тэг буюу түүнээс олон зайгүй тэмдэгтүүдтэй таарч [^ ]* дараа нь нэг буюу хэд хэдэн хоосон зай " +" байна. Үр дүнгийн тэргүүлэх зай гарахаас сэргийлж сүүлийн хэсгийг нэмсэн.
Мөр бүрийн эхний хоосон зайны өмнөх текстийг хасахын тулд томъёог "бүх тохирох" горимд ( жишээний_тоо ) бичнэ. орхигдуулсан):
=RegExpReplace(A5, "^[^ ]* +", "")
Эхний мөрийн эхний зайны өмнөх текстийг устгаж, бусад бүх мөрийг хэвээр үлдээхийн тулд жишээний_тоо аргументыг 1 болгож тохируулна:
=RegExpReplace(A5, "^[^ ]* +", "", 1)
Тэмдэгтийн өмнөх бүх зүйлийг арилгах регекс
Тодорхой тэмдэгтийн өмнөх бүх текстийг устгах хамгийн хялбар арга бол regex ашиглах явдал юм. үүнтэй адил:
Ерөнхий загвар : ^[^char]*char
Хүний хэл рүү орчуулбал "^-ээр бэхлэгдсэн мөрийн эхнээс" гэж бичсэн байна. , char -ын эхний тохиолдол хүртэл char [^char]*-аас бусад 0 ба түүнээс дээш тэмдэгтийг тааруулна уу.
Жишээ нь, эхний хоёр цэгийн өмнөх бүх текстийг устгах , энэ тогтмол хэллэгийг ашиглана уу:
Загвар : ^[^:]*:
Үр дүнгийн эхний хоосон зайнаас зайлсхийхийн тулд хоосон зайд \s* тэмдэгт нэмнэ үү. төгсгөл. Энэ нь бүгдийг устгах болно Эхний хоёр цэгийн өмнө g-г бичиж, дараа нь хоосон зайг таслана:
Загвар : ^[^:]*:\s*
=RegExpReplace(A5, "^[^:]*:\s*", "")
Зөвлөгөө. Ердийн илэрхийллээс гадна Excel нь текстийг байрлалаар эсвэл тохирох байдлаар устгах өөрийн гэсэн арга хэрэгсэлтэй. Төрөлх томъёогоор даалгавраа хэрхэн гүйцэтгэхийг сурахын тулд,Excel дээрх тэмдэгтийн өмнө болон хойно текстийг хэрхэн устгах талаар үзнэ үү.
Regex-аас бусад бүх зүйлийг арилгахын тулд
Хадгалахыг хүссэн тэмдэгтүүдээс бусад бүх тэмдэгтүүдийг мөрөөс устгахын тулд үгүйсгэсэн тэмдэгтүүдийг ашиглана уу.
Жишээ нь жижиг үсгээс бусад бүх тэмдэгтийг хасахын тулд болон цэгүүдийн хувьд regex нь:
Хэв маяг : [^a-z\.]+
Үнэндээ энд + хэмжигдэхүүнгүйгээр хийж болно, учир нь манай функц бүгдийг орлуулдаг. таарч олсон. Хэмжигч нь үүнийг арай хурдан болгодог - тэмдэгт тус бүрийг зохицуулахын оронд та дэд мөрийг солино.
=RegExpReplace(A5, "[^a-z\.]+", "")
Excel дээрх html хаягуудыг арилгахын тулд Regex.
Юуны өмнө HTML хэл нь ердийн хэл биш тул үүнийг ердийн хэллэгээр задлан шинжлэх нь хамгийн сайн арга биш гэдгийг тэмдэглэх нь зүйтэй. Энэ нь regexs нь таны датасетийг илүү цэвэр болгохын тулд нүднээсээ хаягуудыг арилгахад тусалж чадна.
HTML хаягуудыг үргэлж өнцөгт хаалтанд байрлуулдаг тул та дараах регексүүдийн аль нэгийг ашиглан тэдгээрийг олох боломжтой.
Үгүйсгэсэн анги:
Загвар : ]*>
Энд бид нээлтийн өнцгийн хаалтанд таарч, дараа нь дараах тэмдэгтээс бусад тэмдэгт тэг буюу түүнээс олон тохиолдоно. хаалтын өнцгийн хаалт [^>]* хамгийн ойрын хаалтын өнцгийн хаалт хүртэл.
Залхуу хайлт:
Загвар :
Энд таарч байна Эхний нээлтийн хаалтаас эхлээд хаалтын хаалт хүртэл. Асуултын тэмдэг нь .*-г цөөн тэмдэгттэй тааруулахыг шаарддагмөр.
Бүх мөрийг нэг мөр болгон боловсруулахын тулд:
Ерөнхий загвар : char(.