ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excelຫນຶ່ງໃນວຽກງານທີ່ໃຊ້ເວລາຫຼາຍທີ່ສຸດແລະອຸກອັ່ງໃນເວລາທີ່ເຮັດວຽກກັບຂໍ້ຄວາມໃນ Excel ແມ່ນ paring - ການແຍກ “ເຂົ້າປຸ້ນ” ທີ່ເປັນຕົວອັກສອນ ແລະ ຕົວເລກອອກເປັນສ່ວນປະກອບ ແລະ ແຍກຊິ້ນສ່ວນທີ່ພວກເຮົາຕ້ອງການອອກຈາກມັນ. ຍົກ​ຕົວ​ຢ່າງ:

  • ສະກັດລະຫັດໄປສະນີຈາກທີ່ຢູ່ (ມັນດີຖ້າລະຫັດຫັດໄປສະນີຢູ່ສະເຫມີໃນຕອນຕົ້ນ, ແຕ່ຖ້າມັນບໍ່ແມ່ນ?)
  • ຊອກຫາຕົວເລກ ແລະວັນທີຂອງໃບແຈ້ງໜີ້ຈາກລາຍລະອຽດຂອງການຈ່າຍເງິນໃນໃບແຈ້ງຍອດທະນາຄານ
  • ການສະກັດເອົາ TIN ຈາກຄໍາອະທິບາຍ motley ຂອງບໍລິສັດໃນບັນຊີລາຍຊື່ຂອງຄູ່ຮ່ວມງານ
  • ຊອກຫາໝາຍເລກລົດ ຫຼືໝາຍເລກບົດຄວາມໃນຄຳອະທິບາຍ, ແລະອື່ນໆ.

ປົກກະຕິແລ້ວໃນກໍລະນີດັ່ງກ່າວ, ຫຼັງຈາກເຄິ່ງຊົ່ວໂມງຂອງ dreary ເລືອກເອົາຂໍ້ຄວາມດ້ວຍຕົນເອງ, ຄວາມຄິດເລີ່ມຕົ້ນທີ່ຈະມາໃນໃຈ somehow ອັດຕະໂນມັດຂະບວນການນີ້ (ໂດຍສະເພາະຖ້າຫາກວ່າມີຂໍ້ມູນຫຼາຍ). ມີ​ວິ​ທີ​ແກ້​ໄຂ​ຈໍາ​ນວນ​ຫນຶ່ງ​ແລະ​ມີ​ລະ​ດັບ​ທີ່​ແຕກ​ຕ່າງ​ກັນ​ຂອງ​ຄວາມ​ສັບ​ສົນ​, ປະ​ສິດ​ທິ​ພາບ​:

  • ການນໍາໃຊ້ ຟັງຊັນຂໍ້ຄວາມໃນ Excel ເພື່ອຊອກຫາຂໍ້ຄວາມຕັດກາວ: LEVSIMV (ຊ້າຍ), RIGHT (ຂວາ), ປທສ (ກາງ), STsEPIT (CONCATENATE) ແລະ analogues ຂອງມັນ, ສົມທົບ (JOINTEXT), ຄວາມຈິງ (ແນ່ນອນ) etc. ວິທີການນີ້ແມ່ນດີຖ້າມີເຫດຜົນທີ່ຊັດເຈນຢູ່ໃນຂໍ້ຄວາມ (ຕົວຢ່າງ, ດັດຊະນີແມ່ນຢູ່ສະເຫມີໃນຕອນຕົ້ນຂອງທີ່ຢູ່). ຖ້າບໍ່ດັ່ງນັ້ນ, ສູດຈະກາຍເປັນຄວາມສັບສົນຫຼາຍແລະ, ບາງຄັ້ງ, ມັນກໍ່ມາຮອດສູດອາເຣ, ເຊິ່ງຊ້າລົງຢ່າງຫຼວງຫຼາຍໃນຕາຕະລາງຂະຫນາດໃຫຍ່.
  • ການນໍາໃຊ້ ຄືກັບຕົວປະຕິບັດຄວາມຄ້າຍຄືກັນຂອງຂໍ້ຄວາມ ຈາກ Visual Basic ຫໍ່ຢູ່ໃນຟັງຊັນມະຫາພາກແບບກຳນົດເອງ. ນີ້ອະນຸຍາດໃຫ້ທ່ານປະຕິບັດການຄົ້ນຫາທີ່ມີຄວາມຍືດຫຍຸ່ນຫຼາຍຂຶ້ນໂດຍໃຊ້ຕົວອັກສອນ wildcard (*, #,?, ແລະອື່ນໆ) ແຕ່ຫນ້າເສຍດາຍ, ເຄື່ອງມືນີ້ບໍ່ສາມາດສະກັດຂໍ້ຄວາມຍ່ອຍທີ່ຕ້ອງການຈາກຂໍ້ຄວາມ - ພຽງແຕ່ກວດເບິ່ງວ່າມັນມີຢູ່ໃນມັນ.

ນອກ ເໜືອ ໄປຈາກຂ້າງເທິງ, ຍັງມີອີກວິທີ ໜຶ່ງ ທີ່ຮູ້ກັນດີໃນວົງແຄບຂອງນັກຂຽນໂປລແກລມມືອາຊີບ, ນັກພັດທະນາເວັບແລະເຕັກໂນໂລຢີອື່ນໆ - ນີ້ແມ່ນ. ສຳ ນວນປົກກະຕິ (ການສະແດງອອກປົກກະຕິ = RegExp = "regexps" = "ປົກກະຕິ"). ເວົ້າງ່າຍໆ, RegExp ເປັນພາສາທີ່ຕົວອັກສອນພິເສດແລະກົດລະບຽບຖືກນໍາໃຊ້ເພື່ອຄົ້ນຫາສາຍຍ່ອຍທີ່ຈໍາເປັນໃນຂໍ້ຄວາມ, ສະກັດພວກມັນຫຼືປ່ຽນພວກມັນດ້ວຍຂໍ້ຄວາມອື່ນໆ.. ການສະແດງອອກແບບປົກກະຕິເປັນເຄື່ອງມືທີ່ມີປະສິດທິພາບແລະສວຍງາມທີ່ລື່ນກາຍວິທີການອື່ນໆຂອງການເຮັດວຽກກັບຂໍ້ຄວາມໂດຍລໍາດັບຂະຫນາດ. ພາສາການຂຽນໂປຼແກຼມຈໍານວນຫຼາຍ (C#, PHP, Perl, JavaScript…) ແລະຕົວແກ້ໄຂຂໍ້ຄວາມ (Word, Notepad ++…) ສະຫນັບສະຫນູນການສະແດງອອກປົກກະຕິ.

ແຕ່ຫນ້າເສຍດາຍ, Microsoft Excel ບໍ່ໄດ້ຮັບການສະຫນັບສະຫນູນ RegExp ອອກຈາກກ່ອງ, ແຕ່ນີ້ສາມາດແກ້ໄຂໄດ້ງ່າຍດ້ວຍ VBA. ເປີດ Visual Basic Editor ຈາກແຖບ ການພັດທະນາ (ຜູ້ພັດທະນາ) ຫຼືທາງລັດແປ້ນພິມ alt+F11. ຈາກນັ້ນໃສ່ໂມດູນໃຫມ່ຜ່ານເມນູ ໃສ່ - ໂມດູນ ແລະຄັດລອກຂໍ້ຄວາມຂອງຟັງຊັນມະຫາພາກຕໍ່ໄປນີ້ຢູ່ທີ່ນັ້ນ:

Public Function RegExpExtract(Text As String, Pattern As String, Optional Item as Integer = 1) As String On Error GoTo ErrHandl Set regex = CreateObject("VBScript.RegExp") regex.Pattern = Pattern regex.Global = True ຖ້າ regex.Test (ຂໍ້ຄວາມ) ຈາກນັ້ນກຳນົດການຈັບຄູ່ = regex.Execute(Text) RegExpExtract = matches.Item(Item - 1) Exit Function End ຖ້າ ErrHandl: RegExpExtract = CVErr(xlErrValue) End Function  

ຕອນນີ້ພວກເຮົາສາມາດປິດ Visual Basic Editor ແລະກັບຄືນໄປຫາ Excel ເພື່ອທົດລອງໃຊ້ຄຸນສົມບັດໃໝ່ຂອງພວກເຮົາ. syntax ຂອງມັນແມ່ນດັ່ງຕໍ່ໄປນີ້:

=RegExpExtract(txt ; ຮູບແບບ ; ລາຍການ )

ບ່ອນທີ່

  • txt – ຕາລາງທີ່ມີຂໍ້ຄວາມທີ່ພວກເຮົາກໍາລັງກວດສອບແລະຈາກທີ່ພວກເຮົາຕ້ອງການສະກັດ substring ທີ່ພວກເຮົາຕ້ອງການ
  • ຮູບແບບ - ຫນ້າກາກ (ຮູບແບບ) ສໍາລັບການຄົ້ນຫາ substring
  • ລາຍການ - ເລກລໍາດັບຂອງສາຍຍ່ອຍທີ່ຈະຖືກສະກັດອອກ, ຖ້າມີຫລາຍອັນ (ຖ້າບໍ່ໄດ້ລະບຸ, ປະກົດການທໍາອິດຈະສະແດງ)

ສິ່ງທີ່ຫນ້າສົນໃຈທີ່ສຸດຢູ່ທີ່ນີ້, ແນ່ນອນ, ແມ່ນຮູບແບບ - ຮູບແບບຂອງຕົວອັກສອນພິເສດ "ໃນພາສາ" ຂອງ RegExp, ເຊິ່ງກໍານົດສິ່ງທີ່ແນ່ນອນແລະບ່ອນທີ່ພວກເຮົາຕ້ອງການຊອກຫາ. ນີ້ແມ່ນສິ່ງພື້ນຖານທີ່ສຸດທີ່ຈະເຮັດໃຫ້ທ່ານເລີ່ມຕົ້ນ:

 ຮູບແບບ  ລາຍລະອຽດ
 . ງ່າຍດາຍທີ່ສຸດແມ່ນຈຸດ. ມັນກົງກັບຕົວລະຄອນໃດນຶ່ງໃນແບບຢູ່ໃນຕຳແໜ່ງທີ່ກຳນົດໄວ້.
 s ຕົວອັກສອນໃດນຶ່ງທີ່ມີລັກສະນະເປັນຊ່ອງຫວ່າງ (ຍະຫວ່າງ, ແຖບ, ຫຼືຕົວແບ່ງແຖວ).
 S
ຮູບແບບຕ້ານການປ່ຽນແປງຂອງຮູບແບບກ່ອນໜ້າ, ເຊັ່ນ: ຕົວອັກສອນທີ່ບໍ່ມີຊ່ອງຫວ່າງ.
 d
ເລກໃດ
 D
ໂຕປ່ຽນແປງຂອງຕົວແປກ່ອນໜ້າ, ເຊັ່ນ: ຕົວເລກທີ່ບໍ່ແມ່ນຕົວເລກໃດໆ
 w ຕົວອັກສອນລາຕິນ (AZ), ຕົວເລກ ຫຼື ຂີດກ້ອງ
 W ຕົວແປທີ່ກົງກັນຂ້າມກັບອັນກ່ອນໜ້າ, ເຊັ່ນ: ບໍ່ແມ່ນພາສາລະຕິນ, ບໍ່ແມ່ນຕົວເລກ ແລະບໍ່ແມ່ນຂີດກ້ອງ.
[ລັກສະນະ] ໃນວົງເລັບສີ່ຫຼ່ຽມ, ທ່ານສາມາດກໍານົດຫນຶ່ງຫຼືຫຼາຍຕົວອັກສອນທີ່ອະນຸຍາດໃຫ້ຢູ່ໃນຕໍາແຫນ່ງທີ່ລະບຸໄວ້ໃນຂໍ້ຄວາມ. ຍົກ​ຕົວ​ຢ່າງ ສິນລະປະ ຈະກົງກັບຄຳສັບໃດນຶ່ງ: ຕາຕະລາງ or ປະທານ.

ທ່ານ​ຍັງ​ບໍ່​ສາ​ມາດ​ຈໍາ​ນວນ​ຕົວ​ອັກ​ສອນ​ໄດ້, ແຕ່​ຕັ້ງ​ໃຫ້​ພວກ​ເຂົາ​ເປັນ​ໄລ​ຍະ​ທີ່​ແຍກ​ອອກ​ໂດຍ​ການ​ຂີດ​ຫມາຍ​ຕິກ​, ເຊັ່ນ​: ແທນ​ທີ່​ຈະ​ເປັນ [ABDCDEF] ຂຽນ [AF]. ຫຼືແທນ [4567] ແນະນໍາ [-4 7]. ຕົວຢ່າງ, ເພື່ອກໍານົດຕົວອັກສອນ Cyrillic ທັງຫມົດ, ທ່ານສາມາດນໍາໃຊ້ແມ່ແບບ [a-yaA-YaoYo].

[^ລັກສະນະ] ຖ້າຫຼັງຈາກວົງເລັບເປີດ, ເພີ່ມສັນຍາລັກ "ຝາ" ^, ຫຼັງຈາກນັ້ນຊຸດຈະໄດ້ຮັບຄວາມຫມາຍກົງກັນຂ້າມ - ໃນຕໍາແຫນ່ງທີ່ລະບຸໄວ້ໃນຂໍ້ຄວາມ, ຕົວອັກສອນທັງຫມົດຈະຖືກອະນຸຍາດໃຫ້, ຍົກເວັ້ນສໍາລັບລາຍການທີ່ລະບຸໄວ້. ແມ່ນແລ້ວ, ແມ່ແບບ [^ЖМ]ut ຈະພົບ ເສັ້ນທາງ or Substance or ລືມ, ແຕ່ບໍ່ແມ່ນ ຢ້ານ or ຄວາມກ້າຫານ, ຕົວຢ່າງ.
 | ຕົວປະຕິບັດການ Boolean OR (OR) ເພື່ອກວດກາເບິ່ງເງື່ອນໄຂທີ່ລະບຸໄວ້. ຍົກ​ຕົວ​ຢ່າງ (ຈາກພະຫັດ|seven|ໃບເກັບເງິນ) ຈະຄົ້ນຫາຂໍ້ຄວາມສໍາລັບຄໍາທີ່ລະບຸໄວ້. ໂດຍປົກກະຕິ, ຊຸດຂອງຕົວເລືອກຖືກຫຸ້ມຢູ່ໃນວົງເລັບ.
 ^ ຈຸດເລີ່ມຕົ້ນຂອງສາຍ
 $ ທ້າຍແຖວ
 b ສິ້ນສຸດຂອງຄໍາສັບ

ຖ້າພວກເຮົາກໍາລັງຊອກຫາຕົວເລກທີ່ແນ່ນອນ, ຕົວຢ່າງ, ລະຫັດໄປສະນີຫົກຕົວເລກຫຼືລະຫັດຜະລິດຕະພັນສາມຕົວອັກສອນ, ຫຼັງຈາກນັ້ນພວກເຮົາມາກູ້ໄພ. ເຄື່ອງປະລິມານ or ເຄື່ອງປະລິມານ ແມ່ນການສະແດງອອກພິເສດທີ່ລະບຸຈໍານວນຕົວອັກສອນທີ່ຈະຊອກຫາ. Quantifiers ຖືກນໍາໃຊ້ກັບຕົວອັກສອນທີ່ມາກ່ອນມັນ:

  Quantor  ລາຍລະອຽດ
 ? ສູນຫຼືຫນຶ່ງປະກົດການ. ຍົກ​ຕົວ​ຢ່າງ .? ຈະໝາຍເຖິງຕົວລະຄອນໃດນຶ່ງ ຫຼືບໍ່ມີຕົວຕົນ.
 + ໜຶ່ງ ຫຼືຫຼາຍລາຍການ. ຍົກ​ຕົວ​ຢ່າງ d+ ຫມາຍ​ຄວາມ​ວ່າ​ຈໍາ​ນວນ​ຂອງ​ຕົວ​ເລກ​ໃດ​ຫນຶ່ງ (ເຊັ່ນ​ຕົວ​ເລກ​ລະ​ຫວ່າງ 0 ແລະ infinity​)​.
 * ປະກົດການສູນ ຫຼືຫຼາຍກວ່ານັ້ນ, ເຊັ່ນ: ປະລິມານໃດນຶ່ງ. ດັ່ງນັ້ນ s* ໝາຍເຖິງຈຳນວນຊ່ອງ ຫຼືບໍ່ມີຊ່ອງຫວ່າງ.
{ຈໍານວນ} or

{ເລກ 1,ເລກ 2}

ຖ້າທ່ານຕ້ອງການກໍານົດຈໍານວນການປະກົດຕົວຢ່າງເຂັ້ມງວດ, ຫຼັງຈາກນັ້ນມັນຖືກລະບຸໄວ້ໃນວົງເລັບ curly. ຍົກ​ຕົວ​ຢ່າງ d{6} ຫມາຍຄວາມວ່າຢ່າງເຂັ້ມງວດຫົກຕົວເລກ, ແລະຮູບແບບ s{2,5} – ສອງຫາຫ້າຊ່ອງ

ຕອນນີ້ໃຫ້ພວກເຮົາກ້າວໄປສູ່ສ່ວນທີ່ຫນ້າສົນໃຈທີ່ສຸດ - ການວິເຄາະຂອງການປະຕິບັດຫນ້າທີ່ສ້າງຂື້ນແລະສິ່ງທີ່ພວກເຮົາໄດ້ຮຽນຮູ້ກ່ຽວກັບຮູບແບບກ່ຽວກັບຕົວຢ່າງການປະຕິບັດຈາກຊີວິດ.

ສະກັດຕົວເລກຈາກຂໍ້ຄວາມ

ເພື່ອເລີ່ມຕົ້ນ, ໃຫ້ວິເຄາະກໍລະນີທີ່ງ່າຍດາຍ - ທ່ານຈໍາເປັນຕ້ອງໄດ້ສະກັດຕົວເລກທໍາອິດຈາກ porridge alphanumeric, ສໍາລັບການຍົກຕົວຢ່າງ, ພະລັງງານຂອງການສະຫນອງພະລັງງານທີ່ບໍ່ມີການລົບກວນຈາກບັນຊີລາຍຊື່ລາຄາ:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ເຫດຜົນທາງຫລັງຂອງການສະແດງອອກປົກກະຕິແມ່ນງ່າຍດາຍ: d ຫມາຍ​ເຖິງ​ຕົວ​ເລກ​ໃດ​ຫນຶ່ງ​, ແລະ​ປະ​ລິ​ມານ​ + ເວົ້າວ່າຈໍານວນຂອງພວກເຂົາຄວນຈະເປັນຫນຶ່ງຫຼືຫຼາຍກວ່ານັ້ນ. ລົບສອງເທົ່າຢູ່ທາງຫນ້າຂອງຟັງຊັນແມ່ນຈໍາເປັນເພື່ອ "ບິນ" ປ່ຽນຕົວອັກສອນທີ່ສະກັດອອກເປັນຕົວເລກເຕັມຈາກຕົວເລກເປັນຂໍ້ຄວາມ.

ລະຫັດໄປສະນີ

ຢູ່ glance ທໍາອິດ, ທຸກສິ່ງທຸກຢ່າງແມ່ນງ່າຍດາຍຢູ່ທີ່ນີ້ - ພວກເຮົາກໍາລັງຊອກຫາຕົວຈິງຫົກຕົວເລກຕິດຕໍ່ກັນ. ພວກເຮົາໃຊ້ລັກສະນະພິເສດ d ສໍາລັບຕົວເລກແລະຈໍານວນ 6 {} ສໍາ​ລັບ​ຈໍາ​ນວນ​ຂອງ​ຕົວ​ອັກ​ສອນ​:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ຢ່າງໃດກໍຕາມ, ສະຖານະການແມ່ນເປັນໄປໄດ້ໃນເວລາທີ່, ໄປທາງຊ້າຍຂອງດັດຊະນີໃນເສັ້ນ, ມີຊຸດໃຫຍ່ຂອງຕົວເລກຕິດຕໍ່ກັນ (ເບີໂທລະສັບ, TIN, ບັນຊີທະນາຄານ, ແລະອື່ນໆ) ຫຼັງຈາກນັ້ນລະດູການປົກກະຕິຂອງພວກເຮົາຈະດຶງອອກ 6 ທໍາອິດ. ຕົວເລກຈາກມັນ, ie ຈະບໍ່ເຮັດວຽກຢ່າງຖືກຕ້ອງ:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ເພື່ອປ້ອງກັນບໍ່ໃຫ້ເຫດການນີ້ເກີດຂຶ້ນ, ພວກເຮົາຈໍາເປັນຕ້ອງເພີ່ມຕົວແກ້ໄຂປະມານແຄມຂອງການສະແດງປົກກະຕິຂອງພວກເຮົາ b ຫມາຍເຖິງການສິ້ນສຸດຂອງຄໍາສັບໃດຫນຶ່ງ. ນີ້ຈະເຮັດໃຫ້ມັນຊັດເຈນກັບ Excel ວ່າ fragment (index) ທີ່ພວກເຮົາຕ້ອງການຄວນຈະເປັນຄໍາແຍກຕ່າງຫາກ, ແລະບໍ່ແມ່ນສ່ວນຫນຶ່ງຂອງ fragment ອື່ນ (ເບີໂທລະສັບ):

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ໂທລະ​ສັບ

ບັນຫາກ່ຽວກັບການຊອກຫາເບີໂທລະສັບໃນຂໍ້ຄວາມແມ່ນວ່າມີຫຼາຍທາງເລືອກສໍາລັບການຂຽນຕົວເລກ - ມີແລະບໍ່ມີ hyphens, ຜ່ານຊ່ອງ, ມີຫຼືບໍ່ມີລະຫັດພາກພື້ນໃນວົງເລັບ, ແລະອື່ນໆ. ດັ່ງນັ້ນ, ໃນຄວາມຄິດເຫັນຂອງຂ້ອຍ, ມັນງ່າຍກວ່າທີ່ຈະ ທໍາອິດເຮັດຄວາມສະອາດຕົວອັກສອນເຫຼົ່ານີ້ທັງຫມົດອອກຈາກຂໍ້ຄວາມຕົ້ນສະບັບໂດຍໃຊ້ຟັງຊັນທີ່ຊ້ອນກັນຫຼາຍ ແທນ (ປ່ຽນແທນ)ດັ່ງນັ້ນມັນຕິດກັນເປັນອັນດຽວ, ແລະຫຼັງຈາກນັ້ນມີ primitive ປົກກະຕິ d{11} ດຶງອອກ 11 ຕົວເລກຕິດຕໍ່ກັນ:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ITN

ມັນສັບສົນເລັກນ້ອຍຢູ່ທີ່ນີ້, ເພາະວ່າ TIN (ໃນປະເທດຂອງພວກເຮົາ) ສາມາດເປັນ 10 ຕົວເລກ (ສໍາລັບນິຕິບຸກຄົນ) ຫຼື 12 ຕົວເລກ (ສໍາລັບບຸກຄົນ). ຖ້າທ່ານບໍ່ພົບຄວາມຜິດໂດຍສະເພາະ, ມັນກໍ່ເປັນໄປໄດ້ທີ່ຈະພໍໃຈກັບປົກກະຕິ d{10,12}, ແຕ່, ເວົ້າຢ່າງເຂັ້ມງວດ, ມັນຈະດຶງຕົວເລກທັງຫມົດຈາກ 10 ຫາ 12 ຕົວອັກສອນ, ie ແລະໃສ່ 11 ຕົວເລກຜິດ. ມັນຈະຖືກຕ້ອງກວ່າທີ່ຈະໃຊ້ສອງຮູບແບບທີ່ເຊື່ອມຕໍ່ກັນໂດຍຕົວປະຕິບັດການ OR ຕາມເຫດຜົນ | (ແຖບແນວຕັ້ງ):

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ກະລຸນາສັງເກດວ່າໃນການສອບຖາມທໍາອິດພວກເຮົາຊອກຫາຕົວເລກ 12 ບິດ, ແລະພຽງແຕ່ຫຼັງຈາກນັ້ນສໍາລັບຕົວເລກ 10 ບິດ. ຖ້າພວກເຮົາຂຽນການສະແດງອອກປົກກະຕິຂອງພວກເຮົາໃນທາງອື່ນ, ມັນຈະດຶງອອກມາສໍາລັບທຸກຄົນ, ເຖິງແມ່ນວ່າ TIN ຍາວ 12 ບິດ, ພຽງແຕ່ 10 ຕົວອັກສອນທໍາອິດ. ນັ້ນແມ່ນ, ຫຼັງຈາກເງື່ອນໄຂທໍາອິດຖືກກະຕຸ້ນ, ການກວດສອບຕື່ມອີກບໍ່ໄດ້ດໍາເນີນການ:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ນີ້ແມ່ນຄວາມແຕກຕ່າງພື້ນຖານລະຫວ່າງຜູ້ປະກອບການ | ຈາກຟັງຊັນທາງເຫດຜົນ excel ມາດຕະຖານ OR (OR), ບ່ອນທີ່ rearranging ການໂຕ້ຖຽງບໍ່ມີການປ່ຽນແປງຜົນໄດ້ຮັບ.

ຜະລິດຕະພັນ SKUs

ໃນຫຼາຍໆບໍລິສັດ, ຕົວລະບຸທີ່ເປັນເອກະລັກແມ່ນຖືກມອບຫມາຍໃຫ້ສິນຄ້າແລະການບໍລິການ - ບົດຄວາມ, ລະຫັດ SAP, SKUs, ແລະອື່ນໆ. ຖ້າມີເຫດຜົນຢູ່ໃນຫມາຍເຫດຂອງພວກເຂົາ, ພວກເຂົາສາມາດດຶງອອກຈາກຂໍ້ຄວາມຕ່າງໆໄດ້ຢ່າງງ່າຍດາຍໂດຍໃຊ້ຄໍາເວົ້າປົກກະຕິ. ສໍາລັບຕົວຢ່າງ, ຖ້າພວກເຮົາຮູ້ວ່າບົດຄວາມຂອງພວກເຮົາປະກອບດ້ວຍສາມຕົວພິມໃຫຍ່ພາສາອັງກິດ, ຍັບຍັ້ງແລະຕົວເລກສາມຕົວເລກຕໍ່ໄປ, ຫຼັງຈາກນັ້ນ:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ເຫດຜົນທາງຫລັງຂອງແມ່ແບບແມ່ນງ່າຍດາຍ. [AZ] - ຫມາຍເຖິງຕົວພິມໃຫຍ່ຂອງຕົວອັກສອນລາຕິນ. ຕົວເລກຕໍ່ໄປ 3 {} ເວົ້າວ່າມັນເປັນສິ່ງສໍາຄັນສໍາລັບພວກເຮົາທີ່ມີຕົວອັກສອນສາມຢ່າງ. ຫຼັງຈາກ hyphen, ພວກເຮົາກໍາລັງລໍຖ້າສາມຕົວເລກ, ດັ່ງນັ້ນພວກເຮົາເພີ່ມໃນຕອນທ້າຍ d{3}

ຈຳນວນເງິນ

ໃນລັກສະນະທີ່ຄ້າຍຄືກັນກັບວັກທີ່ຜ່ານມາ, ທ່ານຍັງສາມາດດຶງລາຄາ (ຄ່າໃຊ້ຈ່າຍ, VAT ...) ຈາກຄໍາອະທິບາຍຂອງສິນຄ້າ. ຕົວຢ່າງ, ຖ້າຕົວເລກເງິນຖືກລະບຸດ້ວຍຂີດໝາຍ, ຈາກນັ້ນ:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ຮູບແບບ d ກັບ​ຕົວ​ປະ​ລິ​ມານ​ + ຊອກຫາຕົວເລກໃດນຶ່ງເຖິງຂີດໝາຍ, ແລະ d{2} ຈະຊອກຫາ pennies (ສອງຕົວເລກ) ຫຼັງຈາກ.

ຖ້າທ່ານຕ້ອງການສະກັດບໍ່ແມ່ນລາຄາ, ແຕ່ VAT, ທ່ານສາມາດນໍາໃຊ້ການໂຕ້ຖຽງທາງເລືອກທີສາມຂອງຟັງຊັນ RegExpExtract ຂອງພວກເຮົາ, ເຊິ່ງກໍານົດຈໍານວນອົງປະກອບທີ່ຈະຖືກສະກັດອອກ. ແລະ, ແນ່ນອນ, ທ່ານສາມາດທົດແທນຫນ້າທີ່ ແທນ (ປ່ຽນແທນ) ໃນຜົນໄດ້ຮັບ, ຍັບຍັ້ງໃສ່ຕົວຂັ້ນຖານທົດສະນິຍົມມາດຕະຖານ ແລະເພີ່ມເຄື່ອງໝາຍລົບສອງເທົ່າໃນຕອນເລີ່ມຕົ້ນ ເພື່ອໃຫ້ Excel ຕີຄວາມໝາຍ VAT ທີ່ພົບເຫັນເປັນຕົວເລກປົກກະຕິ:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ປ້າຍລົດ

ຖ້າທ່ານບໍ່ເອົາຍານພາຫະນະພິເສດ, ລົດພ່ວງແລະລົດຈັກອື່ນໆ, ຕົວເລກມາດຕະຖານຂອງລົດຈະຖືກແຍກອອກຕາມຫຼັກການ "ຕົວອັກສອນ - ສາມຕົວເລກ - ສອງຕົວອັກສອນ - ລະຫັດພາກພື້ນ". ຍິ່ງໄປກວ່ານັ້ນ, ລະຫັດພາກພື້ນສາມາດເປັນ 2- ຫຼື 3 ຕົວເລກ, ແລະພຽງແຕ່ລັກສະນະທີ່ຄ້າຍຄືກັນກັບຕົວອັກສອນລາຕິນຖືກນໍາໃຊ້ເປັນຕົວອັກສອນ. ດັ່ງນັ້ນ, ການສະແດງອອກເປັນປົກກະຕິຕໍ່ໄປນີ້ຈະຊ່ວຍໃຫ້ພວກເຮົາສະກັດຕົວເລກຈາກຂໍ້ຄວາມ:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ທີ່ໃຊ້ເວລາ

ເພື່ອສະກັດເວລາໃນຮູບແບບ HH:MM, ການສະແດງອອກປົກກະຕິຕໍ່ໄປນີ້ແມ່ນເຫມາະສົມ:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ຫຼັງຈາກຊິ້ນສ່ວນຂອງລໍາໄສ້ [0-5]d, ເນື່ອງຈາກວ່າມັນງ່າຍທີ່ຈະຄິດອອກ, ກໍານົດຕົວເລກໃດນຶ່ງໃນຂອບເຂດ 00-59. ກ່ອນຈໍ້າສອງເມັດໃນວົງເລັບ, ສອງຮູບແບບເຮັດວຽກ, ແຍກກັນດ້ວຍເຫດຜົນ OR (ທໍ່):

  • [0-1]d – ຈໍາ​ນວນ​ໃດ​ຫນຶ່ງ​ໃນ​ລະ​ຫວ່າງ 00-19​
  • 2[0-3] – ຈໍາ​ນວນ​ໃດ​ຫນຶ່ງ​ໃນ​ລະ​ຫວ່າງ 20-23​

ເພື່ອຜົນໄດ້ຮັບທີ່ໄດ້ຮັບ, ທ່ານຍັງສາມາດນໍາໃຊ້ຟັງຊັນ Excel ມາດຕະຖານ ເວລາ (ທີມ)ເພື່ອປ່ຽນມັນເຂົ້າໄປໃນຮູບແບບເວລາທີ່ເຂົ້າໃຈໄດ້ກັບໂຄງການແລະເຫມາະສົມສໍາລັບການຄິດໄລ່ຕື່ມອີກ.

ກວດສອບລະຫັດຜ່ານ

ສົມມຸດວ່າພວກເຮົາຈໍາເປັນຕ້ອງໄດ້ກວດເບິ່ງບັນຊີລາຍຊື່ຂອງລະຫັດຜ່ານ invented ໂດຍຜູ້ໃຊ້ສໍາລັບຄວາມຖືກຕ້ອງ. ຕາມກົດລະບຽບຂອງພວກເຮົາ, ລະຫັດຜ່ານສາມາດມີຕົວອັກສອນພາສາອັງກິດເທົ່ານັ້ນ (ຕົວພິມນ້ອຍຫຼືຕົວພິມໃຫຍ່) ແລະຕົວເລກ. ບໍ່ອະນຸຍາດໃຫ້ມີຍະຫວ່າງ, ຂີດກ້ອງ ແລະເຄື່ອງໝາຍວັກຕອນອື່ນໆ.

ການກວດສອບສາມາດຖືກຈັດລຽງໂດຍໃຊ້ການສະແດງອອກປົກກະຕິງ່າຍໆຕໍ່ໄປນີ້:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ໃນ​ຄວາມ​ເປັນ​ຈິງ, ມີຮູບແບບດັ່ງກ່າວພວກເຮົາຮຽກຮ້ອງໃຫ້ລະຫວ່າງການເລີ່ມຕົ້ນ (^) ແລະ​ສິ້ນ​ສຸດ ($) ໃນຂໍ້ຄວາມຂອງພວກເຮົາມີພຽງແຕ່ຕົວອັກສອນຈາກທີ່ກໍານົດໄວ້ໃນວົງເລັບສີ່ຫຼ່ຽມ. ຖ້າທ່ານຍັງຕ້ອງກວດເບິ່ງຄວາມຍາວຂອງລະຫັດຜ່ານ (ຕົວຢ່າງ, ຢ່າງຫນ້ອຍ 6 ຕົວອັກສອນ), ຫຼັງຈາກນັ້ນຕົວກໍານົດປະລິມານ + ສາມາດຖືກແທນທີ່ດ້ວຍໄລຍະ "ຫົກຫຼືຫຼາຍກວ່າ" ໃນຮູບແບບ {6,}:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ເມືອງ​ຈາກ​ທີ່​ຢູ່​

ໃຫ້ເວົ້າວ່າພວກເຮົາຈໍາເປັນຕ້ອງດຶງເມືອງຈາກແຖບທີ່ຢູ່. ໂຄງການປົກກະຕິຈະຊ່ວຍ, ສະກັດຂໍ້ຄວາມຈາກ "g." ໃສ່ເຄື່ອງໝາຍຈຸດຕໍ່ໄປ:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ລອງພິຈາລະນາເບິ່ງຮູບແບບນີ້ຢ່າງລະອຽດ.

ຖ້າທ່ານໄດ້ອ່ານຂໍ້ຄວາມຂ້າງເທິງ, ທ່ານເຂົ້າໃຈແລ້ວວ່າບາງຕົວອັກສອນໃນການສະແດງຜົນປົກກະຕິ (ໄລຍະເວລາ, ດາວ, ເຄື່ອງຫມາຍເງິນໂດລາ, ແລະອື່ນໆ) ມີຄວາມຫມາຍພິເສດ. ຖ້າທ່ານຕ້ອງການຊອກຫາຕົວລະຄອນເຫຼົ່ານີ້ດ້ວຍຕົນເອງ, ຫຼັງຈາກນັ້ນພວກມັນຖືກນໍາຫນ້າດ້ວຍ backslash (ບາງຄັ້ງເອີ້ນວ່າ ໄສ້). ດັ່ງນັ້ນ, ເມື່ອຊອກຫາຊິ້ນສ່ວນ "g." ພວກເຮົາຕ້ອງຂຽນໃນການສະແດງປົກກະຕິ ທ່ານ. ຖ້າພວກເຮົາກໍາລັງຊອກຫາບວກ, ຫຼັງຈາກນັ້ນ + ແລະອື່ນໆ

ຕົວອັກສອນສອງຕົວຕໍ່ໄປໃນແມ່ແບບຂອງພວກເຮົາ, ຈຸດ ແລະເຄື່ອງໝາຍດາວຈຳນວນ, ຫຍໍ້ມາຈາກຕົວເລກຂອງຕົວອັກສອນໃດນຶ່ງ, ເຊັ່ນຊື່ເມືອງໃດນຶ່ງ.

ມີເຄື່ອງໝາຍຈຸດຢູ່ທ້າຍຂອງແມ່ແບບ, ເພາະວ່າພວກເຮົາກໍາລັງຊອກຫາຂໍ້ຄວາມຈາກ “g.” ໃສ່ເຄື່ອງໝາຍຈຸດ. ແຕ່ສາມາດມີເຄື່ອງໝາຍຈຸດຫຼາຍອັນຢູ່ໃນຂໍ້ຄວາມ, ແມ່ນບໍ? ບໍ່ພຽງແຕ່ຫຼັງຈາກເມືອງ, ແຕ່ຍັງຫຼັງຈາກຖະຫນົນ, ເຮືອນ, ແລະອື່ນໆ. ການຮ້ອງຂໍຂອງພວກເຮົາຈະຢຸດເຊົາການໃດ? ນັ້ນແມ່ນສິ່ງທີ່ເຄື່ອງຫມາຍຄໍາຖາມແມ່ນສໍາລັບ. ຖ້າບໍ່ມີມັນ, ການສະແດງອອກປົກກະຕິຂອງພວກເຮົາຈະດຶງສາຍທີ່ຍາວທີ່ສຸດທີ່ເປັນໄປໄດ້:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ໃນແງ່ຂອງການສະແດງອອກເປັນປົກກະຕິ, ຮູບແບບດັ່ງກ່າວແມ່ນ "greedy". ເພື່ອແກ້ໄຂສະຖານະການ, ຕ້ອງມີເຄື່ອງຫມາຍຄໍາຖາມ - ມັນເຮັດໃຫ້ຕົວກໍານົດປະລິມານຫຼັງຈາກນັ້ນມັນຢືນຢູ່ "stingy" - ແລະການສອບຖາມຂອງພວກເຮົາໃຊ້ເວລາຂໍ້ຄວາມພຽງແຕ່ເຖິງເຄື່ອງໝາຍຈຸດທໍາອິດຫຼັງຈາກ "g.":

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ຊື່ໄຟລ໌ຈາກເສັ້ນທາງເຕັມ

ສະຖານະການທີ່ພົບເລື້ອຍອີກອັນຫນຶ່ງແມ່ນການສະກັດຊື່ໄຟລ໌ຈາກເສັ້ນທາງເຕັມ. ການສະແດງອອກແບບປົກກະຕິງ່າຍໆຂອງແບບຟອມຈະຊ່ວຍໄດ້ທີ່ນີ້:

ແຍກຂໍ້ຄວາມດ້ວຍການສະແດງອອກປົກກະຕິ (RegExp) ໃນ Excel

ເຄັດລັບຢູ່ທີ່ນີ້ແມ່ນວ່າການຄົ້ນຫາ, ໃນຄວາມເປັນຈິງ, ເກີດຂຶ້ນໃນທິດທາງກົງກັນຂ້າມ - ຈາກຈຸດສິ້ນສຸດເຖິງຈຸດເລີ່ມຕົ້ນ, ເພາະວ່າໃນຕອນທ້າຍຂອງຮູບແບບຂອງພວກເຮົາແມ່ນ. $, ແລະພວກເຮົາກໍາລັງຊອກຫາທຸກສິ່ງທຸກຢ່າງກ່ອນທີ່ມັນຈະຂຶ້ນກັບ backslash ທໍາອິດຈາກຂວາ. backslash ແມ່ນ escaped, ຄືຈຸດໃນຕົວຢ່າງທີ່ຜ່ານມາ.

PS

"ໄປສູ່ຈຸດສຸດທ້າຍ" ຂ້າພະເຈົ້າຕ້ອງການໃຫ້ຄວາມກະຈ່າງແຈ້ງວ່າທັງຫມົດຂ້າງເທິງນີ້ແມ່ນສ່ວນນ້ອຍໆຂອງຄວາມເປັນໄປໄດ້ທັງຫມົດທີ່ສະແດງອອກເປັນປົກກະຕິ. ມີຫຼາຍລັກສະນະພິເສດແລະກົດລະບຽບສໍາລັບການນໍາໃຊ້ຂອງພວກເຂົາ, ແລະປື້ມທັງຫມົດໄດ້ຖືກຂຽນໄວ້ໃນຫົວຂໍ້ນີ້ (ຂ້າພະເຈົ້າແນະນໍາໃຫ້ຢ່າງຫນ້ອຍຫນຶ່ງນີ້ສໍາລັບການເລີ່ມຕົ້ນ). ໃນວິທີການຫນຶ່ງ, ການຂຽນຄໍາເວົ້າປົກກະຕິແມ່ນເກືອບເປັນສິນລະປະ. ເກືອບສະເຫມີ, ການສະແດງອອກເປັນປົກກະຕິ invented ສາມາດປັບປຸງຫຼືເສີມ, ເຮັດໃຫ້ມັນສະຫງ່າງາມຫຼືສາມາດເຮັດວຽກກັບລະດັບຄວາມກວ້າງຂອງຂໍ້ມູນການປ້ອນຂໍ້ມູນ.

ເພື່ອວິເຄາະ ແລະວິເຄາະການສະແດງອອກປົກກະຕິຂອງຄົນອື່ນ ຫຼືແກ້ໄຂຂໍ້ບົກຜ່ອງຂອງເຈົ້າເອງ, ມີບໍລິການອອນໄລນ໌ທີ່ສະດວກຫຼາຍອັນ: RegEx101, RegExr ແລະຫຼາຍ

ແຕ່ຫນ້າເສຍດາຍ, ບໍ່ແມ່ນລັກສະນະທັງຫມົດຂອງການສະແດງອອກປົກກະຕິຄລາສສິກແມ່ນສະຫນັບສະຫນູນໃນ VBA (ຕົວຢ່າງ, ການຄົ້ນຫາແບບປີ້ນກັບກັນຫຼື POSIX classes) ແລະສາມາດເຮັດວຽກກັບ Cyrillic, ແຕ່ຂ້ອຍຄິດວ່າສິ່ງທີ່ມີພຽງພໍສໍາລັບຄັ້ງທໍາອິດທີ່ຈະກະລຸນາທ່ານ.

ຖ້າທ່ານບໍ່ໃຫມ່ໃນຫົວຂໍ້, ແລະທ່ານມີບາງສິ່ງບາງຢ່າງທີ່ຈະແບ່ງປັນ, ອອກຈາກການສະແດງອອກປົກກະຕິທີ່ເປັນປະໂຫຍດໃນເວລາທີ່ເຮັດວຽກໃນ Excel ໃນຄໍາເຫັນຂ້າງລຸ່ມນີ້. ໃຈຫນຶ່ງແມ່ນດີ, ແຕ່ເກີບສອງແມ່ນຄູ່!

  • ການປ່ຽນແທນ ແລະທຳຄວາມສະອາດຂໍ້ຄວາມດ້ວຍຟັງຊັນ SUBSTITUTE
  • ຄົ້ນຫາແລະເນັ້ນໃສ່ຕົວອັກສອນລາຕິນໃນຂໍ້ຄວາມ
  • ຊອກຫາຂໍ້ຄວາມທີ່ຄ້າຍຄືກັນທີ່ໃກ້ທີ່ສຸດ (Ivanov = Ivonov = Ivanof, ແລະອື່ນໆ)

ອອກຈາກ Reply ເປັນ