កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

ប្រសិនបើអ្នកយ៉ាងហោចណាស់ធ្លាប់ស្គាល់ពាក្យធម្មតាបន្តិច នោះអ្នកមិនចាំបាច់ផ្សព្វផ្សាយវាទេ។ ប្រសិនបើអ្នកមិនសូវនៅក្នុងប្រធានបទទេ កន្សោមធម្មតា (Regular Expressions = RegExp = "regexps" = "regulars") គឺជាភាសាដែលដោយប្រើតួអក្សរ និងច្បាប់ពិសេស ខ្សែអក្សររងចាំបាច់ត្រូវបានស្វែងរកក្នុងអត្ថបទ ពួកគេត្រូវបានស្រង់ចេញ ឬជំនួសដោយអត្ថបទផ្សេងទៀត។ នេះគឺជាឧបករណ៍ដ៏មានអនុភាព និងស្រស់ស្អាត ដែលជាលំដាប់នៃទំហំធំជាងវិធីផ្សេងទៀតទាំងអស់នៃការធ្វើការជាមួយអត្ថបទ។

ខ្ញុំបានពិពណ៌នាលម្អិតរួចហើយ និងជាមួយនឹងឧទាហរណ៍មួយចំនួនពីជីវិតអំពីរបៀបដែលអ្នកអាចបន្ថែមការគាំទ្រកន្សោមធម្មតាទៅ Excel ដោយប្រើម៉ាក្រូសាមញ្ញ - ប្រសិនបើអ្នកមិនទាន់បានអានអត្ថបទនេះទេ ខ្ញុំសូមណែនាំឱ្យអ្នកអានវាមុនពេលបន្ត។ អ្នកនឹងរកឃើញរបស់ថ្មីជាច្រើនខ្ញុំធានា🙂

ទោះយ៉ាងណាក៏ដោយ សំណួរនៅតែបើកចំហ - របៀបបន្ថែមសមត្ថភាពក្នុងការប្រើកន្សោមធម្មតានៅក្នុង Power Query? ជាការពិតណាស់ Power Query គឺល្អដោយខ្លួនឯង ហើយអាចធ្វើបានច្រើនជាមួយអត្ថបទ (កាត់ បិទស្អិត សម្អាត។ល។) ប៉ុន្តែប្រសិនបើអ្នកអាចឆ្លងកាត់វាដោយប្រើថាមពលនៃកន្សោមធម្មតា វាគ្រាន់តែជាគ្រាប់បែកប៉ុណ្ណោះ។

ជាអកុសល មិនមានមុខងារដែលភ្ជាប់មកជាមួយសម្រាប់ធ្វើការជាមួយ RegExps ក្នុង Power Query ហើយជំនួយ និងជំនួយបច្ចេកទេសផ្លូវការរបស់ Microsoft ឆ្លើយសំណួរនេះក្នុងន័យអវិជ្ជមាន។ ទោះយ៉ាងណាក៏ដោយ មានវិធីមួយជុំវិញការកំណត់នេះ🙂

ខ្លឹមសារនៃវិធីសាស្ត្រ

គំនិតសំខាន់គឺសាមញ្ញដើម្បីបង្ខូចកេរ្តិ៍ឈ្មោះ។

នៅក្នុងបញ្ជីនៃសមត្ថភាព Power Query ដែលភ្ជាប់មកជាមួយ មានមុខងារមួយ។ គេហទំព័រ. ការពិពណ៌នាអំពីមុខងារនេះនៅលើគេហទំព័រជំនួយរបស់ Microsoft ផ្លូវការគឺមានភាពសង្ខេបបំផុត៖

កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

បកប្រែ នេះអាចជា៖ "ត្រឡប់មាតិកានៃឯកសារ HTML ដែលបំបែកទៅជារចនាសម្ព័ន្ធសមាសធាតុរបស់វា ក៏ដូចជាតំណាងនៃឯកសារពេញលេញ និងតួរបស់វាបន្ទាប់ពីស្លាកត្រូវបានដកចេញ។" ការពិពណ៌នាដូច្នេះដោយស្មោះត្រង់។

ជាធម្មតាមុខងារនេះត្រូវបានប្រើនៅពេលនាំចូលទិន្នន័យពីគេហទំព័រ ហើយត្រូវបានជំនួសដោយស្វ័យប្រវត្តិ ឧទាហរណ៍នៅពេលយើងជ្រើសរើសនៅលើផ្ទាំង ទិន្នន័យ ពាក្យបញ្ជា ពីអ៊ីនធឺណិត (ទិន្នន័យ - ពីគេហទំព័រ). យើងផ្តល់ឱ្យមុខងារនូវទំព័របណ្ដាញជាអាគុយម៉ង់ ហើយវាបញ្ជូនមាតិការបស់វាមកយើងក្នុងទម្រង់ជាតារាង ដោយបានលុបស្លាកទាំងអស់ពីមុនមក។

អ្វី​ដែល​ជំនួយ​មិន​និយាយ​គឺ​បន្ថែម​លើ​ភាសា HTML markup មុខងារ គេហទំព័រ គាំទ្រស្គ្រីប JavaScriptដែលឥឡូវនេះមានគ្រប់ទីកន្លែងនៅលើគេហទំព័រនៅលើអ៊ីនធឺណិត។ ហើយ JavaScript តែងតែអាចធ្វើការជាមួយកន្សោមធម្មតា និងមានមុខងារភ្ជាប់មកជាមួយសម្រាប់ RegExps! ដូច្នេះ ដើម្បីអនុវត្តកន្សោមធម្មតានៅក្នុង Power Query យើងនឹងត្រូវការផ្តល់មុខងារ Web.Page ជាអាគុយម៉ង់មួយចំពោះកម្មវិធី JavaScript តូចមួយដែលនឹងធ្វើការងារទាំងអស់សម្រាប់ Power Query ។

អ្វីដែលវាមើលទៅដូចនៅក្នុង JavaScript សុទ្ធ

មានមេរៀនលម្អិតជាច្រើនអំពីការធ្វើការជាមួយកន្សោមធម្មតានៅក្នុង JavaScript នៅលើអ៊ីនធឺណិត (ឧទាហរណ៍មួយ, ពីរ) ។

និយាយឱ្យខ្លី និងសាមញ្ញ កូដ JavaScript នឹងមើលទៅដូចនេះ៖

កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

នៅទីនេះ:

  • var str = 'បង់វិក្កយបត្រ 123 និង 789 សម្រាប់សាច់ក្រក'; - បង្កើតអថេរ str ហើយកំណត់វាជាអត្ថបទប្រភពដែលយើងនឹងវិភាគ។
  • លំនាំ var = /d+/gi; - បង្កើតកន្សោមធម្មតា ហើយដាក់វានៅក្នុងអថេរ លំនាំ.

    កន្សោមចាប់ផ្តើមដោយសញ្ញា (/) ។

    កន្សោមដោយខ្លួនវានៅទីនេះឧទាហរណ៍គឺ d+ តំណាងឱ្យលំដាប់នៃលេខណាមួយ។

    តាមរយៈប្រភាគបន្ទាប់ពីកន្សោម មានប៉ារ៉ាម៉ែត្រស្វែងរកបន្ថែម (អ្នកកែប្រែ) - ពួកគេអាចត្រូវបានបញ្ជាក់តាមលំដាប់ណាមួយ៖

    • g – មានន័យថា ការស្វែងរកជាសកល ពោលគឺបន្ទាប់ពីស្វែងរកការផ្គូផ្គង អ្នកមិនគួរបញ្ឈប់ឡើយ ប៉ុន្តែបន្តការស្វែងរករហូតដល់ចុងបញ្ចប់នៃអត្ថបទ។ ប្រសិនបើការកែប្រែនេះមិនត្រូវបានកំណត់ទេ នោះស្គ្រីបរបស់យើងនឹងត្រឡប់តែការផ្គូផ្គងដំបូងប៉ុណ្ណោះ (123)
    • i - ស្វែងរកដោយមិនគិតពីករណីអក្សរ
    • m - ការស្វែងរកច្រើនបន្ទាត់ (ប្រើនៅពេលដែលអត្ថបទប្រភពត្រូវបានបែងចែកទៅជាបន្ទាត់ជាច្រើន)
  • var លទ្ធផល = str.match(pattern).join(';'); - ធ្វើការស្វែងរកក្នុងអត្ថបទប្រភព (str) ដោយកន្សោមធម្មតាដែលបានផ្តល់ឱ្យ (លំនាំ) ហើយដាក់លទ្ធផលក្នុងអថេរ លទ្ធផលភ្ជាប់ពួកវាជាមួយសញ្ញាក្បៀសដោយប្រើពាក្យបញ្ជា ចូលរួម
  • document.write(លទ្ធផល); - បង្ហាញមាតិកានៃអថេរលទ្ធផល

សូមចំណាំផងដែរថា ខ្សែអក្សរ (មិនរាប់បញ្ចូលកន្សោមធម្មតា) នៅក្នុង JavaScript ត្រូវបានរុំព័ទ្ធក្នុង apostrophes មិនមែនដកស្រង់ដូចនៅក្នុង Power Query ឬ VBA នោះទេ។

នៅលទ្ធផល ស្គ្រីបនេះនឹងផ្តល់ឱ្យយើងនូវលទ្ធផលជាលេខទាំងអស់ដែលមាននៅក្នុងអត្ថបទប្រភព៖

123, 789

វគ្គខ្លី JavaScript បានបញ្ចប់ហើយ អរគុណអ្នកទាំងអស់គ្នា។ សង្ឃឹមថាអ្នកទទួលបានតក្កវិជ្ជា🙂

វានៅសល់ដើម្បីផ្ទេរសំណង់នេះទៅ Power Query ។

ស្វែងរក និងស្រង់មុខងារអត្ថបទដោយការបញ្ចេញមតិធម្មតានៅក្នុងសំណួរថាមពល

យើងធ្វើដូចខាងក្រោមៈ

1. បើក Excel ហើយបង្កើត Power Query ទទេថ្មីមួយនៅក្នុងផ្ទាំង ទិន្នន័យ - ទទួលបានទិន្នន័យ / បង្កើតសំណើ - ពីប្រភពផ្សេងទៀត - សំណើទទេ (ទិន្នន័យ — ទទួលបានទិន្នន័យ / សំណួរថ្មី — ពីប្រភពផ្សេងទៀត — សំណួរទទេ). ប្រសិនបើអ្នកមានកំណែចាស់នៃ Excel 2010-2013 និង Power Query អ្នកមិនមានភ្ជាប់មកជាមួយទេ ប៉ុន្តែត្រូវបានដំឡើងជា add-in ដាច់ដោយឡែក នោះអ្វីៗទាំងអស់នេះនឹងមាននៅលើផ្ទាំង សំណួរថាមពលនិង​មិន ទិន្នន័យ.

2. នៅក្នុងបង្អួចទទេនៃកម្មវិធីនិពន្ធសំណួរដែលបើក ក្នុងបន្ទះខាងស្តាំ បញ្ចូលឈ្មោះមុខងារនាពេលអនាគតរបស់យើងភ្លាមៗ (ឧទាហរណ៍ fxRegExpExtract)

កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

3. តោះទៅផ្ទាំង មើល - កម្មវិធីនិពន្ធកម្រិតខ្ពស់ (មើល - កម្មវិធីនិពន្ធកម្រិតខ្ពស់)យើងលុបកូដ M ទាំងមូលនៃសំណើទទេ ហើយបិទភ្ជាប់កូដនៃមុខងារទំនើបរបស់យើងនៅទីនោះ៖

កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

មើលដៃរបស់អ្នក៖

នៅក្នុងជួរទីមួយ យើងនិយាយថាមុខងាររបស់យើងនឹងមានអាគុយម៉ង់អត្ថបទបី៖ txt - អត្ថបទដើមត្រូវបានវិភាគ regex - លំនាំកន្សោមធម្មតា, ដេលីម - តួអក្សរកំណត់ព្រំដែនសម្រាប់បង្ហាញលទ្ធផល។

បន្ទាប់យើងហៅមុខងារ គេហទំព័របង្កើតកូដ JavaScript ដែលបានពិពណ៌នាខាងលើនៅក្នុងអាគុយម៉ង់របស់វា។ យើងបិទភ្ជាប់ និងជំនួសអាគុយម៉ង់អថេររបស់យើងទៅក្នុងកូដ។

បំណែក៖

[ទិន្នន័យ]{0}[Children]{0}[Children]{1}[Text]{0}

… គឺចាំបាច់ដើម្បី “ធ្លាក់ចូល” ទៅក្នុងតារាងជាមួយនឹងលទ្ធផលដែលយើងត្រូវការ។ ចំណុចសំខាន់គឺថាមុខងារ គេហទំព័រ ជាលទ្ធផល វាបង្កើតតារាងដាក់គ្នាជាច្រើនដែលធ្វើឡើងវិញនូវរចនាសម្ព័ន្ធនៃគេហទំព័រមួយ។ ដោយគ្មានបំណែកនៃ M-code នេះ មុខងាររបស់យើងនឹងបញ្ចេញវា៖

កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

… ហើយ​យើង​នឹង​ត្រូវ​ចុច​ពាក្យ​ច្រើន​ដង តារាងជាបន្តបន្ទាប់ "ធ្លាក់ចូល" ទៅក្នុងតារាងដែលមានកូននៅក្នុងជួរឈរ កុមារ:

កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

ជំនួសឱ្យការដកស្រង់ទាំងអស់នេះ យើងបង្ហាញភ្លាមៗនៅក្នុងកូដនៃមុខងាររបស់យើងដែលដាក់តារាង និងជួរឈរ (អត្ថបទ) យើង​ត្រូវការ។

តាមពិតនៅទីនេះ អាថ៌កំបាំងទាំងអស់។ វានៅសល់ដើម្បីចុចប៊ូតុង បញ្ចប់ នៅក្នុងបង្អួច កម្មវិធីនិពន្ធកម្រិតខ្ពស់ដែលជាកន្លែងដែលយើងបានបញ្ចូលលេខកូដរបស់យើង ហើយអ្នកអាចបន្តទៅអ្វីដែលឆ្ងាញ់បំផុត សាកល្បងមុខងាររបស់យើងនៅកន្លែងធ្វើការ។

នេះគឺជាឧទាហរណ៍មួយចំនួននៃគ្រាប់ពូជ។

ឧទាហរណ៍ 1. ការទាញយកលេខគណនី និងកាលបរិច្ឆេទពីការពិពណ៌នាការទូទាត់

យើងមានរបាយការណ៍ធនាគារជាមួយនឹងការពិពណ៌នា (គោលបំណង) នៃការទូទាត់ ដែលអ្នកត្រូវដកលេខ និងកាលបរិច្ឆេទនៃវិក្កយបត្រដែលបានបង់ទៅជាជួរដាច់ដោយឡែក៖

កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

យើងផ្ទុកតារាងទៅក្នុង Power Query តាមវិធីស្តង់ដារ ទិន្នន័យ - ពីតារាង/ជួរ (ទិន្នន័យ - ពី Tអាច/Rទេវតា).

បន្ទាប់មកយើងបន្ថែមជួរឈរគណនាជាមួយមុខងាររបស់យើងតាមរយៈ បន្ថែមជួរឈរ - ហៅមុខងារផ្ទាល់ខ្លួន (បន្ថែមជួរ - ហៅមុខងារផ្ទាល់ខ្លួន) ហើយបញ្ចូលអាគុយម៉ង់របស់វា៖

កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

ជាកន្សោមធម្មតា (អាគុយម៉ង់ regex) គំរូដែលយើងប្រើ៖

(ឃ{3,5}|d{2}.d{2}.d{4})

… បកប្រែជាភាសាមនុស្សមានន័យថា៖ 

លេខពី 3 ទៅ 5 ខ្ទង់ (លេខគណនី)

or

បំណែកនៃទម្រង់ "លេខ 2 ប៊ីត - ចំណុច - លេខ 2 ប៊ីត - ចំណុច - លេខ 4 ប៊ីត"នោះគឺកាលបរិច្ឆេទនៃទម្រង់ DD.MM.YYYY ។

ជាតួអក្សរកំណត់ព្រំដែន (អាគុយម៉ង់ ដេលីម) បញ្ចូលសញ្ញាក្បៀស។

បន្ទាប់ពីចុចលើ OK មុខងារវេទមន្តរបស់យើងវិភាគទិន្នន័យដំបូងទាំងអស់ដោយយោងទៅតាមកន្សោមធម្មតារបស់យើង ហើយបង្កើតជាជួរសម្រាប់យើងជាមួយនឹងលេខដែលបានរកឃើញ និងកាលបរិច្ឆេទនៃវិក្កយបត្រ៖

កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

វានៅសល់ដើម្បីបំបែកវាដោយសញ្ញាក្បៀសដោយប្រើពាក្យបញ្ជា ទំព័រដើម — បំបែកជួរឈរ — តាមអ្នកកំណត់ (ទំព័រដើម — បំបែកជួរឈរ — តាមអ្នកកំណត់) ហើយយើងទទួលបានអ្វីដែលយើងចង់បាន៖

កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

សម្រស់!

ឧទាហរណ៍ទី 2៖ ស្រង់អាសយដ្ឋានអ៊ីមែលចេញពីអត្ថបទ

ឧបមាថាយើងមានតារាងខាងក្រោមជាទិន្នន័យដំបូង៖

កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

… ពីកន្លែងដែលយើងត្រូវដកអាសយដ្ឋានអ៊ីមែលដែលបានរកឃើញនៅទីនោះ (សម្រាប់ភាពច្បាស់លាស់ ខ្ញុំបានបន្លិចពួកវាជាពណ៌ក្រហមនៅក្នុងអត្ថបទ)។

ដូចក្នុងឧទាហរណ៍មុន យើងផ្ទុកតារាងទៅក្នុង Power Query តាមវិធីស្តង់ដារតាមរយៈ ទិន្នន័យ - ពីតារាង/ជួរ (ទិន្នន័យ - ពី Tអាច/Rទេវតា).

បន្ទាប់មកយើងបន្ថែមជួរឈរគណនាជាមួយមុខងាររបស់យើងតាមរយៈ បន្ថែមជួរឈរ - ហៅមុខងារផ្ទាល់ខ្លួន (បន្ថែមជួរ - ហៅមុខងារផ្ទាល់ខ្លួន) ហើយបញ្ចូលអាគុយម៉ង់របស់វា៖

កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

ការញែកអាសយដ្ឋានអ៊ីមែលគឺជាកិច្ចការពិបាកជាង ហើយមានកន្សោមធម្មតាជាច្រើននៃកម្រិតខុសគ្នានៃសុបិន្តអាក្រក់ដើម្បីដោះស្រាយវា។ ខ្ញុំ​បាន​ប្រើ​ជម្រើស​សាមញ្ញ​មួយ - មិន​ល្អ​ទេ ប៉ុន្តែ​អាច​ធ្វើ​ការ​បាន​ក្នុង​ករណី​ភាគ​ច្រើន៖

[w|.|-]*@w*.[w|.]*

ជាសញ្ញាបំបែក (ដេលីម) អ្នកអាចបញ្ចូលសញ្ញាក្បៀស និងចន្លោះ។

ចុចលើ OK ហើយយើងទទួលបានជួរឈរដែលមានអាសយដ្ឋានអ៊ីមែលដកស្រង់ចេញពីអត្ថបទដើម "បបរ"៖

កន្សោមធម្មតា (RegExp) នៅក្នុងសំណួរថាមពល

វេទមន្ត!

PS

ដូច​ពាក្យ​ពោល​ថា “គ្មាន​អ្វី​ល្អ​ណា​ដែល​មិន​អាច​ធ្វើ​ឲ្យ​កាន់​តែ​ប្រសើរ​ជាង​នេះ​បាន​ឡើយ”។ Power Query មានភាពត្រជាក់ដោយខ្លួនវា ហើយនៅពេលដែលរួមបញ្ចូលជាមួយកន្សោមធម្មតា វាផ្តល់ឱ្យយើងនូវថាមពល និងភាពបត់បែនដែលមិនប្រាកដប្រជាទាំងស្រុងក្នុងការដំណើរការទិន្នន័យអត្ថបទណាមួយ។ ខ្ញុំសង្ឃឹមថាថ្ងៃណាមួយក្រុមហ៊ុន Microsoft នឹងបន្ថែមការគាំទ្រ RegExp នៅក្នុងការអាប់ដេត Power Query និង Power BI ហើយការរាំខាងលើទាំងអស់ជាមួយនឹង tambourine នឹងក្លាយជារឿងអតីតកាល។ មែនហើយ សម្រាប់ពេលនេះ។

ខ្ញុំក៏ចង់បន្ថែមថាវាងាយស្រួលក្នុងការលេងជាមួយកន្សោមធម្មតានៅលើគេហទំព័រ https://regexr.com/ – ត្រឹមត្រូវនៅក្នុងកម្មវិធីនិពន្ធអនឡាញ។ នៅទីនោះនៅក្នុងផ្នែក គំរូសហគមន៍ មានរដូវទៀងទាត់ដែលត្រៀមរួចជាស្រេចជាច្រើនសម្រាប់គ្រប់ឱកាសទាំងអស់។ ការពិសោធន៍ - ថាមពលទាំងអស់នៃកន្សោមធម្មតាគឺឥឡូវនេះនៅក្នុងសេវាកម្មរបស់អ្នកនៅក្នុង Power Query!

  • តើអ្វីទៅជាកន្សោមធម្មតា (RegExp) និងរបៀបប្រើពួកវាក្នុង Excel
  • ការស្វែងរកអត្ថបទមិនច្បាស់នៅក្នុង Power Query
  • ការប្រមូលផ្តុំតារាងពីឯកសារផ្សេងៗដោយប្រើ Power Query

សូមផ្ដល់យោបល់