බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

ඔබ සාමාන්‍ය ප්‍රකාශන අවම වශයෙන් තරමක් හුරුපුරුදු නම්, ඔබට ඒවා ප්‍රචාරණය කිරීමට අවශ්‍ය නොවේ. ඔබ විෂයෙහි එතරම් නොගැලපේ නම්, නිත්‍ය ප්‍රකාශන (නිත්‍ය ප්‍රකාශන = RegExp = “regexps” = “සාමාන්‍ය”) යනු විශේෂ අක්ෂර සහ රීති භාවිතා කරමින්, පෙළ තුළ අවශ්‍ය උපසිරැසි සොයන භාෂාවකි. හෝ වෙනත් පෙළ සමඟ ප්රතිස්ථාපනය විය. මෙය ඉතා බලවත් හා ලස්සන මෙවලමක් වන අතර, පෙළ සමඟ වැඩ කිරීමේ අනෙකුත් සියලුම ක්‍රමවලට වඩා විශාලත්වයේ අනුපිළිවෙලකි.

සරල මැක්‍රෝ භාවිතයෙන් Excel වෙත නිත්‍ය ප්‍රකාශන සහය එක් කරන්නේ කෙසේදැයි මම දැනටමත් විස්තරාත්මකව සහ ජීවිතයෙන් උදාහරණ රාශියක් සමඟ විස්තර කර ඇත - ඔබ මෙම ලිපිය කියවා නොමැති නම්, ඉදිරියට යාමට පෙර එය කියවන ලෙස මම තරයේ නිර්දේශ කරමි. ඔබ බොහෝ නව දේවල් සොයා ගනු ඇත, මම සහතික කරමි 🙂

කෙසේ වෙතත්, ප්රශ්නය විවෘතව පවතී - Power Query හි නිත්ය ප්රකාශන භාවිතා කිරීමේ හැකියාව එකතු කරන්නේ කෙසේද? බල විමසුම, ඇත්ත වශයෙන්ම, එයම හොඳ වන අතර, පෙළ (කැපීම, ඇලවීම, පිරිසිදු කිරීම, ආදිය) සමඟ බොහෝ දේ කළ හැකිය, නමුත් ඔබට සාමාන්‍ය ප්‍රකාශනවල බලයෙන් එය හරස් කළ හැකි නම්, එය බෝම්බයක් පමණක් වනු ඇත.

අවාසනාවකට, Power Query හි RegExps සමඟ වැඩ කිරීම සඳහා ගොඩනඟන ලද කාර්යයන් නොමැත, සහ නිල Microsoft උපකාර සහ තාක්ෂණික සහාය මෙම ප්‍රශ්නයට සෘණාත්මකව පිළිතුරු දෙයි. කෙසේ වෙතත්, මෙම සීමාව වටා මගක් ඇත 🙂

ක්රමයේ සාරය

ප්රධාන අදහස අපකීර්තියට පත් කිරීම සරල ය.

බිල්ට් බල විමසුම් හැකියාවන් ලැයිස්තුවේ, කාර්යයක් ඇත වෙබ් පිටුව. නිල මයික්‍රොසොෆ්ට් උදව් අඩවියේ මෙම කාර්යයේ විස්තරය අතිශයින් සංක්ෂිප්ත ය:

බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

පරිවර්තනය කර ඇති පරිදි, මෙය වනුයේ: "HTML ලේඛනයේ අන්තර්ගතය එහි සංරචක ව්‍යුහයන් වෙතට ආපසු ලබා දෙයි, එසේම ටැග් ඉවත් කිරීමෙන් පසු සම්පූර්ණ ලේඛනය සහ එහි ශරීරය නියෝජනය කරයි." ඉතින්-ඉතින් විස්තරය, අවංකව.

සාමාන්‍යයෙන් මෙම ශ්‍රිතය වෙබයෙන් දත්ත ආයාත කිරීමේදී භාවිතා වන අතර ස්වයංක්‍රීයව ආදේශ කරනු ලැබේ, උදාහරණයක් ලෙස, අපි ටැබය මත තෝරාගත් විට දත්ත විධානය අන්තර්ජාලයෙන් (දත්ත - වෙබයෙන්). අපි ශ්‍රිතයට තර්කයක් ලෙස වෙබ් පිටුවක් ලබා දෙන අතර, එය කලින් ටැග් සියල්ල ඉවත් කර, වගු ආකාරයෙන් එහි අන්තර්ගතය අප වෙත ලබා දෙයි.

උපකාරය නොකියන්නේ HTML සලකුණු භාෂාවට අමතරව බවයි ක්රියාව වෙබ් පිටුව JavaScript ස්ක්‍රිප්ට් සඳහා සහය දක්වයි, එය දැන් අන්තර්ජාලයේ වෙබ් අඩවි වල බහුලව දක්නට ලැබේ. තවද JavaScript, අනෙක් අතට, සෑම විටම සාමාන්‍ය ප්‍රකාශන සමඟ වැඩ කිරීමට හැකි වී ඇති අතර RegExps සඳහා ගොඩනඟන ලද කාර්යයන් ඇත! එබැවින් Power Query හි නිත්‍ය ප්‍රකාශන ක්‍රියාවට නැංවීම සඳහා, Web.Page ශ්‍රිතයන් Power Query සඳහා සියලු වැඩ කරන කුඩා JavaScript වැඩසටහනකට තර්කයක් ලෙස පෝෂණය කිරීමට අවශ්‍ය වනු ඇත.

පිරිසිදු JavaScript වල එය පෙනෙන්නේ කෙසේද?

අන්තර්ජාලයේ JavaScript හි සාමාන්‍ය ප්‍රකාශන සමඟ වැඩ කිරීම පිළිබඳ සවිස්තරාත්මක නිබන්ධන රාශියක් ඇත (උදාහරණයක් ලෙස, එකක්, දෙකක්).

කෙටියෙන් සහ සරලව, JavaScript කේතය මේ ආකාරයෙන් පෙනෙනු ඇත:

බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

මෙහි:

  • var str = 'සොසේජස් සඳහා බිල්පත් 123 සහ 789 ගෙවන්න'; - විචල්‍යයක් සාදන්න str සහ අපි විශ්ලේෂණය කරන මූලාශ්‍ර පෙළ එයට පවරන්න.
  • var රටාව = /d+/gi; - නිත්‍ය ප්‍රකාශනයක් සාදා එය විචල්‍යයකට දමන්න රටාව.

    ප්‍රකාශනය ආරම්භ වන්නේ slash (/) එකකින්.

    උදාහරණයක් ලෙස මෙහි ප්‍රකාශනයම වේ d+ ඉලක්කම්වල ඕනෑම අනුපිළිවෙලක් නියෝජනය කරයි.

    ප්‍රකාශනයෙන් පසු කොටස හරහා අමතර සෙවුම් පරාමිති (විකරණය කරන්නන්) ඇත - ඒවා ඕනෑම අනුපිළිවෙලකින් නියම කළ හැක:

    • g – ගෝලීය සෙවීම යන්නෙන් අදහස් කෙරේ, එනම් ගැළපීමක් සොයාගත් පසු, ඔබ නතර නොකළ යුතුය, නමුත් පෙළ අවසානය දක්වා සෙවුම දිගටම කරගෙන යන්න. මෙම විකරණකාරකය සකසා නොමැති නම්, අපගේ ස්ක්‍රිප්ටය පළමු තරගය පමණක් ලබා දෙනු ඇත (123)
    • i - ලිපි නඩුව නොසලකා සොයන්න
    • m - බහු-රේඛා සෙවීම (මූලාශ්‍ර පෙළ පේළි කිහිපයකට බෙදා ඇති විට භාවිතා වේ)
  • var ප්‍රතිඵලය = str.match(pattern).join(';'); - මූලාශ්‍ර පෙළෙහි සෙවීමක් සිදු කරන්න (str) දී ඇති නිත්‍ය ප්‍රකාශනය මගින් (රටාව) සහ ප්‍රතිඵල විචල්‍යයකට දමන්න ප්රතිඵලය, විධානය භාවිතා කරමින් ඒවා අර්ධ කෝමයක් සමඟ සංයුක්ත කිරීම එක්වන්න
  • document.write(ප්‍රතිඵල); - ප්රතිඵල විචල්යයේ අන්තර්ගතය පෙන්වන්න

ජාවාස්ක්‍රිප්ට් හි ඇති පෙළ තන්තු (සාමාන්‍ය ප්‍රකාශන හැර) ඒවා බල විමසුමේ හෝ වීබීඒ හි ඇති පරිදි උපුටා දැක්වීම් නොව, අපෝස්‍රොප වල කොටා ඇති බව සලකන්න.

ප්‍රතිදානයේදී, මෙම ස්ක්‍රිප්ටය ප්‍රතිඵලයක් ලෙස මූලාශ්‍ර පෙළෙහි ඇති සියලුම සංඛ්‍යා අපට ලබා දෙනු ඇත:

123, 789

JavaScript කෙටි පාඨමාලාව අවසන්, ඔබ සැමට ස්තුතියි. ඔබට තර්කය 🙂 ලැබේ යැයි සිතමි

මෙම ඉදිකිරීම Power Query වෙත මාරු කිරීමට ඉතිරිව ඇත.

බල විමසුමේ නිත්‍ය ප්‍රකාශනය මගින් පෙළ ශ්‍රිතය සෙවීම සහ උපුටා ගැනීම

අපි පහත සඳහන් දේ කරන්නෙමු:

1. එක්සෙල් විවෘත කර ටැබය තුළ නව හිස් බල විමසුමක් සාදන්න දත්ත - දත්ත ලබා ගන්න / ඉල්ලීමක් සාදන්න - වෙනත් මූලාශ්‍ර වලින් - හිස් ඉල්ලීම (දත්ත - දත්ත ලබා ගන්න / නව විමසුම - වෙනත් මූලාශ්‍ර වලින් - හිස් විමසුම). ඔබ සතුව Excel 2010-2013 හි පැරණි අනුවාදයක් සහ බල විමසුම ඔබ සතුව නොමැති නම්, නමුත් වෙනම ඇඩෝනයක් ලෙස ස්ථාපනය කර තිබේ නම්, මේ සියල්ල ටැබය මත ඇත බල විමසුමසහ නැත දත්ත.

2. විවෘත වන විමසුම් සංස්කාරකයේ හිස් කවුළුවෙහි, දකුණු පුවරුවේ, අපගේ අනාගත කාර්යයේ නම වහාම ඇතුළත් කරන්න (උදාහරණයක් ලෙස, fxRegExpExtract)

බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

3. අපි ටැබ් එකට යමු බලන්න - උසස් සංස්කාරකය (බලන්න - උසස් සංස්කාරක), අපි හිස් ඉල්ලීමේ සම්පූර්ණ M-කේතය මකා අපගේ සුපිරි ක්‍රියාකාරීත්වයේ කේතය එහි අලවන්න:

බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

ඔබේ අත් බලන්න:

පළමු පේළියේ, අපගේ කාර්යයට පෙළ තර්ක තුනක් ඇති බව අපි කියමු: txt - විශ්ලේෂණය කරන මුල් පෙළ, regex - නිත්‍ය ප්‍රකාශන රටාව, delim — ප්‍රතිඵල පෙන්වීම සඳහා පරිසීමක අක්ෂරය.

ඊළඟට අපි ශ්‍රිතයට කියනවා වෙබ් පිටුව, එහි තර්කයේ ඉහත විස්තර කර ඇති JavaScript කේතය සැකසීම. අපි අපගේ විචල්‍ය තර්ක කේතයට අලවා ආදේශ කරමු.

ඛණ්ඩනය:

[දත්ත]{0}[ළමයින්]{0}[ළමුන්]{1}[පෙළ]{0}

… අපට අවශ්‍ය ප්‍රතිඵල සමඟ මේසයට “වැටීම” අවශ්‍ය වේ. කාරණය වන්නේ කාර්යයයි වෙබ් පිටුව එහි ප්‍රතිඵලයක් වශයෙන්, එය වෙබ් පිටුවක ව්‍යුහය පුනරුච්චාරණය කරන කැදැලි වගු කිහිපයක් නිෂ්පාදනය කරයි. මෙම M-කේත කොටස නොමැතිව, අපගේ ශ්‍රිතය මෙය ප්‍රතිදානය කරයි:

බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

… සහ අපට වචනය කිහිප වතාවක් ක්ලික් කිරීමට සිදුවේ වගුව, තීරු වල ළමා කැදලි වගු තුලට අනුක්‍රමිකව "වැටීම" දරුවන්:

බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

මෙම සියලු උපුටා දැක්වීම් වෙනුවට, අපි වහාම අපගේ ශ්‍රිතයේ කේතයේ සඳහන් කරන්නේ කුමන වගුව සහ තීරුව ද යන්නයි (පෙළ) අපට අවශ්යයි.

මෙන්න, ඇත්ත වශයෙන්ම, සියලු රහස්. බොත්තම එබීම සඳහා එය ඉතිරිව ඇත අවසානයි කවුළුව තුළ උසස් සංස්කාරක, අපි අපගේ කේතය ඇතුළත් කළ ස්ථානය, සහ ඔබට වඩාත් රසවත් කිරීමට ඉදිරියට යා හැකිය - වැඩ කිරීමේදී අපගේ කාර්යය උත්සාහ කරන්න.

මෙන්න බීජ උදාහරණ කිහිපයක්.

උදාහරණ 1. ගෙවීම් විස්තරයෙන් ගිණුම් අංකය සහ දිනය ලබා ගැනීම

ගෙවීම් පිළිබඳ විස්තරයක් (අරමුණක්) සහිත බැංකු ප්‍රකාශයක් අප සතුව ඇත, එහිදී ඔබට ගෙවන ඉන්වොයිසිවල අංක සහ දිනයන් වෙනම තීරුවලට ඇද ගත යුතුය:

බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

අපි සම්මත ආකාරයට වගුව Power Query වෙත පූරණය කරමු දත්ත - වගුව/පරාසයෙන් (දත්ත - ටී. වෙතින්හැකියාව / ආර්දේවදූතයා).

එවිට අපි අපගේ කාර්යය සමඟ ගණනය කළ තීරුවක් එකතු කරමු තීරුව එක් කරන්න - අභිරුචි කාර්යය අමතන්න (තීරුව එක් කරන්න - අභිරුචි කාර්යය කැඳවන්න) සහ එහි තර්ක ඇතුලත් කරන්න:

බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

නිත්‍ය ප්‍රකාශනයක් ලෙස (තර්කය regex) අපි භාවිතා කරන අච්චුව:

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

… මිනිස් භාෂාවට පරිවර්තනය කර ඇති අර්ථය: 

ඉලක්කම් 3 සිට 5 දක්වා අංක (ගිණුම් අංක)

or

පෝරමයේ කොටස් "2-බිට් අංකය - ලක්ෂ්‍යය - 2-බිට් අංකය - ලක්ෂ්‍යය - 4-බිට් අංකය", එනම්, DD.MM.YYYY පෝරමයේ දිනයන්.

පරිසීමක චරිතයක් ලෙස (තර්කය delim) අර්ධ කොමාවක් ඇතුල් කරන්න.

ක්ලික් කිරීමෙන් පසු OK අපගේ මැජික් ශ්‍රිතය අපගේ සාමාන්‍ය ප්‍රකාශනයට අනුව සියලුම ආරම්භක දත්ත විශ්ලේෂණය කරන අතර ඉන්වොයිසිවල සොයාගත් අංක සහ දිනයන් සමඟ අපට තීරුවක් සාදයි:

බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

විධානය භාවිතා කරමින් එය අර්ධ කෝලයෙන් වෙන් කිරීමට ඉතිරිව ඇත මුල් පිටුව - තීරුව බෙදන්න - පරිසීමකය මගින් (මුල් පිටුව - තීරු බෙදීම - පරිසීමකය අනුව) සහ අපට අවශ්‍ය දේ අපි ලබා ගනිමු:

බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

අලංකාරය!

උදාහරණ 2: පාඨයෙන් ඊමේල් ලිපින උපුටා ගන්න

මූලික දත්ත ලෙස අපට පහත වගුව තිබේ යැයි සිතමු:

බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

… අපට එහි ඇති විද්‍යුත් තැපැල් ලිපින ඉවත් කිරීමට අවශ්‍ය තැනින් (පැහැදිලි භාවය සඳහා, මම ඒවා පෙළෙහි රතු පැහැයෙන් උද්දීපනය කළෙමි).

පෙර උදාහරණයේදී මෙන්, අපි හරහා සම්මත ආකාරයෙන් වගුව Power Query වෙත පූරණය කරමු දත්ත - වගුව/පරාසයෙන් (දත්ත - ටී. වෙතින්හැකියාව / ආර්දේවදූතයා).

එවිට අපි අපගේ කාර්යය සමඟ ගණනය කළ තීරුවක් එකතු කරමු තීරුව එක් කරන්න - අභිරුචි කාර්යය අමතන්න (තීරුව එක් කරන්න - අභිරුචි කාර්යය කැඳවන්න) සහ එහි තර්ක ඇතුලත් කරන්න:

බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

විද්‍යුත් තැපැල් ලිපින විග්‍රහ කිරීම වඩා දුෂ්කර කාර්යයක් වන අතර එය විසඳීම සඳහා විවිධ මට්ටමේ බියකරු සිහින වල නිත්‍ය ප්‍රකාශන රාශියක් ඇත. මම සරල විකල්ප වලින් එකක් භාවිතා කළෙමි - පරිපූර්ණ නොවේ, නමුත් බොහෝ අවස්ථාවලදී හොඳින් ක්රියා කරයි:

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

බෙදුම්කරු ලෙස (delim) ඔබට අර්ධ කෝමාවක් සහ අවකාශයක් ඇතුළත් කළ හැකිය.

මත ක්ලික් කරන්න OK “කැඳ” යන මුල් පෙළෙන් උපුටා ගත් විද්‍යුත් තැපැල් ලිපින සහිත තීරුවක් අපට ලැබේ:

බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

මැජික්!

PS

කියමනට අනුව: "ඊට වඩා හොඳ කළ නොහැකි එවැනි හොඳ දෙයක් නැත." බල විමසුම එහිම සිසිල් වන අතර, නිත්‍ය ප්‍රකාශන සමඟ ඒකාබද්ධ වූ විට, එය අපට ඕනෑම පෙළ දත්ත සැකසීමේදී සම්පූර්ණයෙන්ම යථාර්ථවාදී නොවන බලයක් සහ නම්‍යශීලී බවක් ලබා දෙයි. Power Query සහ Power BI යාවත්කාල කිරීම් සඳහා මයික්‍රොසොෆ්ට් කවදා හෝ RegExp සහය එක් කරනු ඇතැයි මම බලාපොරොත්තු වෙමි සහ රබන් සමග ඉහත සියලුම නැටුම් අතීතයට අයත් දෙයක් බවට පත්වනු ඇතැයි මම බලාපොරොත්තු වෙමි. හොඳයි, දැනට, ඔව්.

https://regexr.com/ වෙබ් අඩවියේ සාමාන්‍ය ප්‍රකාශන සමඟ සෙල්ලම් කිරීම පහසු බව මට එකතු කිරීමට අවශ්‍යයි - සබැඳි සංස්කාරකයේම. එහි කොටසේ ප්‍රජා රටා සියලුම අවස්ථාවන් සඳහා සූදානම් කළ නිත්ය වාර විශාල සංඛ්යාවක් තිබේ. අත්හදා බැලීම - නිත්‍ය ප්‍රකාශනවල සියලු බලය දැන් Power Query තුළ ඔබගේ සේවයේ ඇත!

  • සාමාන්‍ය ප්‍රකාශන මොනවාද (RegExp) සහ ඒවා Excel හි භාවිතා කරන්නේ කෙසේද
  • බල විමසුම තුළ නොපැහැදිලි පෙළ සෙවීම
  • Power Query භාවිතයෙන් විවිධ ගොනු වලින් වගු එකලස් කිරීම

ඔබමයි