එක්සෙල් හි නූල් උකහා ගැනීමට Regex (එකක් හෝ සියලුම ගැලපීම්)

  • මේක Share කරන්න
Michael Brown

අන්තර්ගත වගුව

මෙම නිබන්ධනයේදී, දී ඇති රටාවකට ගැළපෙන උපසිරැසි සොයා ගැනීමට සහ උපුටා ගැනීමට Excel හි සාමාන්‍ය ප්‍රකාශන භාවිත කරන ආකාරය ඔබ ඉගෙන ගනු ඇත.

Microsoft Excel පෙළ උකහා ගැනීම සඳහා කාර්යයන් ගණනාවක් සපයයි. සෛල වලින්. එම ශ්‍රිතයන්ට ඔබගේ වැඩ පත්‍රිකාවල ඇති බොහෝ තන්තු නිස්සාරණය අභියෝග සමඟ සාර්ථකව කටයුතු කළ හැක. බොහෝ, නමුත් සියල්ලම නොවේ. Text functions පැකිළෙන විට, සාමාන්‍ය ප්‍රකාශන ගැලවීමට පැමිණේ. රැඳී සිටින්න... Excel හට RegEx කාර්යයන් නොමැත! ඇත්ත, inbuilt functions නැත. නමුත් ඔබේම ඒවා භාවිතා කිරීමෙන් ඔබව වළක්වන කිසිවක් නැත :)

    Excel VBA Regex ශ්‍රිතය තන්තු උපුටා ගැනීමට

    ඔබගේ Excel වෙත අභිරුචි Regex Extract ශ්‍රිතයක් එක් කිරීමට, පහත කේතය VBA සංස්කාරකයේ අලවන්න. VBA හි සාමාන්‍ය ප්‍රකාශන සක්‍රීය කිරීම සඳහා, අපි බිල්ට් මයික්‍රොසොෆ්ට් RegExp වස්තුව භාවිතා කරන්නෙමු.

    පොදු කාර්යය RegExpExtract(පෙළ String ලෙස , රටාව ලෙස String , Optional instance_num Integer ලෙස = 0, Optional match_case As Boolean = True ) අඳුරු text_matches() String Dim matches_index ලෙස Integer ලෙස Integer On Error GoTo ErrHandl RegExpExtract = "" සකසන්න regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = රටා regex.Global = True regex =.MultiLe එවිට ගැලපෙන regex =.MultiLe. නොසලකා හැරීම = වැරදි වෙනත් regex.ignorecase = සත්‍ය අවසානය සකසන්නේ නම් ගැලපීම් = regex.Execute(text) නම් 0 < ගැලපීම්. ගණන් කරන්න එවිට (0 = උදාහරණ_num) ඉන්පසු නැවත ඩිම් කරන්න text_matchs(matches.Count - 1, 0) matches_index සඳහා = 0 ToVBA RegExp, වඩාත් බලවත් .NET Regex ශ්‍රිතයන් ගැන සාකච්ඡා කරන මීළඟ කොටස කියවීමට මම ඔබව දිරිමත් කරමි.

    Excel හි පෙළ උපුටා ගැනීම සඳහා අභිරුචි .NET පදනම් වූ Regex ශ්‍රිතය

    VBA RegExp ශ්‍රිත මෙන් නොව ඕනෑම Excel පරිශීලකයෙකුට ලිවිය හැක, .NET RegEx යනු සංවර්ධකයාගේ ක්ෂේත්‍රයයි. Microsoft .NET Framework Perl 5 සමඟ අනුකූල පූර්ණ-විශේෂාංග නිත්‍ය ප්‍රකාශන වාක්‍ය ඛණ්ඩයට සහය දක්වයි. මෙම ලිපිය ඔබට එවැනි කාර්යයන් ලියන ආකාරය උගන්වන්නේ නැත (මම ක්‍රමලේඛකයෙකු නොවන අතර එය කරන්නේ කෙසේද යන්න පිළිබඳ අංශු මාත්‍රයක්වත් අදහසක් නැත :)

    සම්මත .NET RegEx එන්ජිම මඟින් සැකසූ බලවත් ශ්‍රිත හතරක් දැනටමත් අපගේ සංවර්ධකයින් විසින් ලියා ඇති අතර Ultimate Suite හි ඇතුළත් කර ඇත. පහත, අපි Excel හි පෙළ උකහා ගැනීම සඳහා විෙශේෂෙයන් නිර්මාණය කර ඇති කාර්යයේ ප්‍රායෝගික භාවිතයන් කිහිපයක් නිරූපණය කරන්නෙමු.

    ඉඟිය. .NET Regex වාක්‍ය ඛණ්ඩය පිළිබඳ තොරතුරු සඳහා, කරුණාකර .NET නිත්‍ය ප්‍රකාශන භාෂාව වෙත යොමු වන්න.

    සාමාන්‍ය ප්‍රකාශන භාවිතයෙන් Excel හි දෂ්ට කිරීම් උපුටා ගන්නේ කෙසේද

    ඔබට Ultimate Suite හි නවතම අනුවාදය ස්ථාපනය කර ඇතැයි උපකල්පනය කරමින්, සාමාන්‍ය ප්‍රකාශන භාවිතයෙන් පෙළ උපුටා ගැනීම මෙම පියවර දෙක දක්වා පහත වැටේ:

    1. Ablebits Data ටැබය මත, Text group හි, Regex Tools ක්ලික් කරන්න.
    2. Regex Tools කවුළුවෙහි, මූලාශ්‍ර දත්ත තෝරන්න, ඔබේ Regex රටාව ඇතුළු කරන්න, සහ Extract විකල්පය තෝරන්න. අගයක් නොව අභිරුචි ශ්‍රිතයක් ලෙස ප්‍රතිඵලය ලබා ගැනීමට, සූත්‍රයක් ලෙස ඇතුළු කරන්න පරීක්ෂා කරන්නපෙට්ටිය. අවසන් වූ පසු, උපුටා ගැනීම බොත්තම ක්ලික් කරන්න.

    ප්‍රතිඵල ඔබේ මුල් දත්තවල දකුණු පස ඇති නව තීරුවක දිස් වනු ඇත:

    AblebitsRegexExtract syntax

    අපගේ අභිරුචි ශ්‍රිතයට පහත වාක්‍ය ඛණ්ඩය ඇත:

    AblebitsRegexExtract(reference, regular_expression)

    කොතැනද:

    • යොමුව (අවශ්‍යයි) - මූලාශ්‍ර තන්තුව අඩංගු කොටුව වෙත යොමුවකි.
    • Regular_expression (අවශ්‍යයි) - ගැලපෙන regex රටාව.

    වැදගත් සටහන! කාර්යය ක්‍රියා කරන්නේ Excel සඳහා Ultimate Suite ස්ථාපනය කර ඇති යන්ත්‍රවල පමණි.

    භාවිත සටහන්

    ඔබේ ඉගෙනීමේ වක්‍රය වඩාත් සුමට කිරීමට සහ ඔබේ අත්දැකීම වඩාත් ප්‍රියජනක කිරීමට, කරුණාකර මෙම කරුණු කෙරෙහි අවධානය යොමු කරන්න:

    1. සූත්‍රයක් සෑදීමට, ඔබට අපගේ Regex මෙවලම් , හෝ Excel හි Insert function සංවාද කොටුව භාවිතා කළ හැක, නැතහොත් කොටුවක සම්පූර්ණ ශ්‍රිත නාමය ටයිප් කරන්න. සූත්‍රය ඇතුළත් කළ පසු, ඔබට ඕනෑම ස්වදේශීය සූත්‍රයක් මෙන් එය කළමනාකරණය කළ හැකිය (සංස්කරණය කරන්න, පිටපත් කරන්න හෝ ගෙන යන්න).
    2. ඔබ Regex මෙවලම් කවුළුවෙහි ඇතුළු කරන රටාව 2වන තර්කයට යයි. වෙනම සෛලයක නිතිපතා ප්‍රකාශනයක් තබා ගැනීමට ද හැකිය. මෙම අවස්ථාවෙහිදී, 2වන තර්කය සඳහා කොටු යොමුවක් භාවිතා කරන්න.
    3. ශ්‍රිතය පළමු සොයාගත් ගැලපීම උපුටා ගනී.
    4. පෙරනිමියෙන්, ශ්‍රිතය කේස් වේ. -සංවේදී . කේස් සංවේදී නොවන ගැලපීම සඳහා, (?i) රටාව භාවිතා කරන්න.
    5. ගැළපීමක් සොයාගත නොහැකි නම්, #N/A දෝෂයකිආපසු ලබා දෙන ලදී.

    අක්ෂර දෙකක් අතර තන්තුව උපුටා ගැනීමට Regex

    අනුලකුණු දෙකක් අතර පෙළ ලබා ගැනීමට, ඔබට ග්‍රහණ කණ්ඩායමක් හෝ වටපිටාවක් භාවිත කළ හැක.

    අපි ඔබ වරහන් අතර අකුරු උකහා ගැනීමට බලාපොරොත්තු වන බව පවසන්න. කණ්ඩායමක් ග්‍රහණය කර ගැනීම පහසුම ක්‍රමයයි.

    රටාව 1 : \[(.*?)\]

    පසුපස ධනාත්මක බැල්මක් සහ ඉදිරි දැක්මක් සහිතව, ප්‍රතිඵලය හරියටම වනු ඇත. එසේමය.

    රටාව 2 : (?<=\[)(.*?)(?=\])

    කරුණාකර අපගේ ග්‍රහණය කරන කණ්ඩායමට අවධානය යොමු කරන්න (.*?) වරහන් දෙකක් අතර පෙළ සඳහා කම්මැලි සෙවුමක් සිදු කරයි - පළමු [ සිට පළමු] දක්වා. ප්‍රශ්නාර්ථ ලකුණක් (.*) නොමැතිව ග්‍රහණය කරන කණ්ඩායමක් ගිජු සෙවුමක් සිදු කර පළමු [ සිට අවසාන ] දක්වා සියල්ල ග්‍රහණය කරයි.

    A2 හි රටාව සමඟ, සූත්‍රය මෙසේ යයි. පහත දැක්වෙන්නේ:

    =AblebitsRegexExtract(A5, $A$2)

    සියලු ගැලපීම් ලබා ගන්නේ කෙසේද

    දැනටමත් සඳහන් කර ඇති පරිදි, AblebitsRegexExtract ශ්‍රිතයට උපුටා ගත හැක්කේ එක් ගැලපීමක් පමණි. සියලුම ගැලපීම් ලබා ගැනීමට, ඔබට අප කලින් සාකච්ඡා කළ VBA ශ්‍රිතය භාවිතා කළ හැක. කෙසේ වෙතත්, එක් අවවාදයක් ඇත - VBA RegExp කණ්ඩායම් ග්‍රහණය කර ගැනීමට සහය නොදක්වයි, එබැවින් ඉහත රටාව "මායිම්" අක්ෂර ද, අපගේ නඩුවේ වරහන් ආපසු ලබා දෙනු ඇත.

    =TEXTJOIN(" ", TRUE, RegExpExtract(A5, $A$2))

    ඉවත් වීමට වරහන් වල, මෙම සූත්‍රය භාවිතයෙන් හිස් නූල් ("") සමඟ ඒවා ආදේශ කරන්න:

    =SUBSTITUTE(SUBSTITUTE(TEXTJOIN(", ", TRUE, RegExpExtract(A5, $A$2)), "]", ""),"[","")

    වඩා හොඳ කියවීමේ හැකියාව සඳහා, අපි පරිසීමකය සඳහා කොමාවක් භාවිතා කරමු.

    තන්තු දෙකක් අතර පෙළ උපුටා ගැනීමට Regex

    අපි වැඩ කර ඇති ප්‍රවේශයඑය වචනානුසාරයෙන් අර්ථ නිරූපණය කරන්න).

  • (?:[A-Za-z\d\-\.]{2,255}\.)? - තුන්වන මට්ටමේ, සිව්වන මට්ටමේ, යනාදී වසම් හඳුනා ගැනීමට ග්‍රහණය නොකරන කණ්ඩායමක්, ( ජංගම අපගේ නියැදි URL හි) තිබේ නම්. පළමු රටාව තුළ, එවැනි උප ඩොමේන සියල්ල නිස්සාරණයට ඇතුළත් කර ගැනීම සඳහා එය විශාල ග්‍රහණ කණ්ඩායමක් තුළ තබා ඇත. උප ඩොමේනයක් අක්ෂර 2 සිට 255 දක්වා දිග විය හැක, එබැවින් {2,255} ප්‍රමාණකාරකය.
  • ([A-Za-z\d\-]{1,63}\.[A-Za-z] {2,24}) - දෙවන මට්ටමේ වසම ( ablebits ) සහ ඉහළ මට්ටමේ වසම ( com ) උපුටා ගැනීම සඳහා කණ්ඩායම ග්‍රහණය කර ගැනීම. දෙවන මට්ටමේ වසමක උපරිම දිග අක්ෂර 63 කි. දැනට පවතින දිගම ඉහළම මට්ටමේ වසමෙහි අක්ෂර 24ක් අඩංගු වේ.
  • A2 හි ඇතුළත් කර ඇති නිත්‍ය ප්‍රකාශනය මත පදනම්ව, පහත සූත්‍රය විවිධ ප්‍රතිඵල නිපදවනු ඇත:

    =AblebitsRegexExtract(A5, $A$2)

    සියලු උපවසම් සමග සම්පූර්ණ වසම් නාමය උපුටා ගැනීමට Regex:

    Regex දෙවන මට්ටමේ වසම් උප ඩොමේන් නොමැතිව උපුටා ගැනීම:

    එක්සෙල් හි සාමාන්‍ය ප්‍රකාශන භාවිතයෙන් පෙළ කොටස් උපුටා ගන්නා ආකාරයයි. කියවීම ගැන මම ඔබට ස්තූතිවන්ත වන අතර ලබන සතියේ අපගේ බ්ලොගයේ ඔබව දැකීමට බලාපොරොත්තු වෙමි!

    ලබාගත හැකි බාගැනීම්

    Excel Regex Extract උදාහරණ (.xlsm ගොනුව)

    Ultimate Suite අත්හදා බැලීමේ අනුවාදය (.exe ගොනුව)

    3>\b(0?[0-9]matches.Count - 1 text_matchs(matches_index, 0) = matches.Item(matches_index) මීළඟ matches_index RegExpExtract = text_matches වෙනත් RegExpExtract = matches.Item(instance_num - 1) End නම් Function ErrHxExit Exit Function =ErrHxExt Exit Function

    ඔබට VBA සමඟ අඩු අත්දැකීමක් තිබේ නම්, පියවරෙන් පියවර පරිශීලක මාර්ගෝපදේශයක් උපකාරී වනු ඇත: Excel හි VBA කේතය ඇතුළත් කරන්නේ කෙසේද.

    සටහන. කාර්යය ක්‍රියා කිරීම සඳහා, ඔබේ ගොනුව සාර්ව සක්‍රීය වැඩපොතක් (.xlsm) ලෙස සුරැකීමට වග බලා ගන්න.

    RegExpExtract සින්ටැක්ස්

    RegExpExtract ශ්‍රිතය සාමාන්‍ය ප්‍රකාශනයකට ගැළපෙන අගයන් සඳහා ආදාන තන්තුවක් සොයමින් එක් හෝ සියලුම ගැලපීම් උපුටා ගනී.

    ශ්‍රිතයට පහත වාක්‍ය ඛණ්ඩය ඇත. :

    RegExpExtract(text, pattern, [instance_num], [match_case])

    තැන්:

    • Text (අවශ්‍ය) - සෙවිය යුතු පෙළ තන්තුව.
    • රටාව (අවශ්‍යයි) - ගැළපෙන සාමාන්‍ය ප්‍රකාශනය. සූත්‍රයක සෘජුවම සැපයූ විට, රටාව ද්විත්ව උද්ධෘත ලකුණු වලින් අමුණා තිබිය යුතුය.
    • Instance_num (විකල්ප) - උපුටා ගත යුත්තේ කුමන අවස්ථාවද යන්න දැක්වෙන අනුක්‍රමික අංකයකි. මඟ හරිනු ලැබුවහොත්, සොයාගත් සියලුම ගැලපීම් (පෙරනිමිය) ලබා දෙයි.
    • Match_case (විකල්ප) - පෙළ නඩුවට ගැළපෙන්නේද නැතහොත් නොසලකා හරින්නේද යන්න නිර්වචනය කරයි. සත්‍ය හෝ මඟ හැර තිබේ නම් (පෙරනිමිය), සිද්ධි සංවේදී ගැලපීම සිදු කරනු ලැබේ; අසත්‍ය නම් - සිද්ධි සංවේදී නොවේ.

    Function එක Excel 365, Excel 2021, Excel හි සියලුම අනුවාද වල ක්‍රියා කරයි2019, Excel 2016, Excel 2013 සහ Excel 2010.

    RegExpExtract ගැන ඔබ දැනගත යුතු කරුණු 4

    ඔබගේ Excel හි ක්‍රියාකාරිත්වය ඵලදායී ලෙස භාවිතා කිරීමට, අවධානය යොමු කළ යුතු වැදගත් කරුණු කිහිපයක් තිබේ:

    1. පෙරනිමියෙන්, ශ්‍රිතය මෙම උදාහරණයේ පෙන්වා ඇති පරිදි සොයාගත් සියලුම ගැලපීම් අසල්වැසි සෛල වෙත ලබා දෙයි. නිශ්චිත සිදුවීමක් ලබා ගැනීමට, instance_num තර්කයට අනුරූප අංකයක් සපයන්න.
    2. පෙරනිමියෙන්, ශ්‍රිතය අවස්ථා සංවේදී වේ. සිද්ධි සංවේදී නොවන ගැලපීම සඳහා, match_case තර්කය FALSE ලෙස සකසන්න. VBA සීමාවන් නිසා, කේස්-අසංවේදී ගොඩනැගීම (?i) ක්‍රියා නොකරනු ඇත.
    3. වලංගු රටාවක් සොයාගත නොහැකි නම් , ශ්‍රිතය කිසිවක් ලබා නොදේ (හිස් තන්තුව).
    4. රටාව අවලංගු නම් , #VALUE! දෝෂයක් ඇතිවේ.

    ඔබේ වැඩ පත්‍රිකාවල මෙම අභිරුචි ශ්‍රිතය භාවිතා කිරීම ආරම්භ කිරීමට පෙර, එහි හැකියාව කුමක්දැයි ඔබ තේරුම් ගත යුතුය, නේද? පහත උදාහරණ මගින් පොදු භාවිත අවස්ථා කිහිපයක් ආවරණය වන අතර Dynamic Array Excel (Microsoft 365 සහ Excel 2021) සහ සම්ප්‍රදායික Excel (2019 සහ පැරණි අනුවාද) වල හැසිරීම වෙනස් විය හැක්කේ මන්දැයි පැහැදිලි කරයි.

    සටහන. Out regex උදාහරණ සුරංගනා සරල දත්ත කට්ටල සඳහා ලියා ඇත. ඒවා ඔබගේ සැබෑ වැඩ පත්‍රිකාවල දෝෂ රහිතව ක්‍රියා කරනු ඇතැයි අපට සහතික විය නොහැක. නිතිපතා ප්‍රකාශන ලිවීම පරිපූර්ණත්වයට නිමක් නැති මාවතක් බව රෙජෙක්ස් පිළිබඳ අත්දැකීම් ඇති අය එකඟ වනු ඇත - සෑම විටම පාහේ කිරීමට ක්‍රමයක් තිබේ.එය වඩාත් අලංකාර හෝ පුළුල් පරාසයක ආදාන දත්ත හැසිරවීමේ හැකියාව ඇත.

    තන්තුවෙන් අංකය උපුටා ගැනීමට Regex

    "සරල සිට සංකීර්ණ දක්වා" ඉගැන්වීමේ මූලික උපරිමය අනුගමනය කරමින්, අපි ඉතා සරල අවස්ථාවකින් ආරම්භ කරමු: තන්තුවෙන් අංකය උපුටා ගැනීම.

    ඔබ තීරණය කළ යුතු පළමු දෙය වන්නේ කුමන අංකය ලබා ගත යුතුද යන්නයි: පළමු, අවසාන, නිශ්චිත සිදුවීම හෝ සියලුම සංඛ්‍යා.

    පළමු අංකය උපුටා ගන්න

    මෙය regex ලබා ගත හැකි තරම් සරල ය. \d යන්නෙන් 0 සිට 9 දක්වා ඕනෑම ඉලක්කම් අදහස් වන අතර + යන්නෙන් එක් වරක් හෝ වැඩි ගණනක් අදහස් වන බැවින්, අපගේ සාමාන්‍ය ප්‍රකාශනය මෙම ස්වරූපය ගනී:

    රටාව : \d+

    සකසන්න instance_num සිට 1 දක්වා සහ ඔබට අවශ්‍ය ප්‍රතිඵලය ලැබෙනු ඇත:

    =RegExpExtract(A5, "\d+", 1)

    A5 මුල් තන්තුව වන තැන.

    පහසුව සඳහා, ඔබට ආදානය කළ හැක. පූර්ව නිශ්චිත කොටුවක ඇති රටාව ($A$2 ) සහ $ ලකුණ සමඟ එහි ලිපිනය අගුළු දමන්න:

    =RegExpExtract(A5, $A$2, 1)

    අවසන් අංකය ලබා ගන්න

    තන්තුවක අවසාන අංකය උකහා ගැනීමට , භාවිත කිරීමට රටාව මෙන්න:

    රටාව : (\d+)(?!.*\d)

    මිනිස් භාෂාවකට පරිවර්තනය කර ඇත , එය මෙසේ කියයි: වෙනත් ඕනෑම අංකයකින් අනුගමනය නොකරන (ඕනෑම තැනක, වහාම නොවේ) අංකයක් සොයා ගන්න. මෙය ප්‍රකාශ කිරීම සඳහා, අපි ඍණාත්මක බැල්මක් (?!.*\d) භාවිතා කරමින් සිටිමු, එයින් අදහස් කරන්නේ රටාවේ දකුණු පසින් එයට පෙර වෙනත් අක්ෂර කීයක් තිබුණත් වෙනත් ඉලක්කම් (\d) නොතිබිය යුතු බවයි.

    =RegExpExtract(A5, "(\d+)(?!.*\d)")

    ඉඟි:

    • විශේෂිත සිදුවීමක් ලබා ගැනීමට, රටාව සහ සුදුසු අනුක්‍රමික සඳහා \d+ භාවිතා කරන්න instance_num සඳහා අංකය.
    • සියලු සංඛ්‍යා උපුටා ගැනීමේ සූත්‍රය ඊළඟ උදාහරණයෙන් සාකච්ඡා කෙරේ.

    සියලු ගැලපීම් උපුටා ගැනීමට Regex

    අපගේ උදාහරණය තව ටිකක් ඉදිරියට ගෙන යමින්, ඔබට එකකින් පමණක් නොව සියලුම සංඛ්‍යා තන්තුවකින් ලබා ගැනීමට අවශ්‍ය යැයි සිතමු.

    ඔබට මතක ඇති පරිදි, උපුටා ගත් ගැලපුම් ගණන විකල්ප <1 මඟින් පාලනය වේ>instance_num තර්කය. පෙරනිමිය සියලු ගැලපීම් වේ, එබැවින් ඔබ සරලව මෙම පරාමිතිය මඟ හැරිය හැක:

    =RegExpExtract(A2, "\d+")

    සූත්‍රය තනි කොටුවක් සඳහා ඉතා අලංකාර ලෙස ක්‍රියා කරයි, නමුත් හැසිරීම Dynamic Array Excel සහ ගතික නොවන අනුවාද වල වෙනස් වේ.

    Excel 365 සහ Excel 2021

    ගතික අරා සඳහා සහය දැක්වීම හේතුවෙන්, සාමාන්‍ය සූත්‍රයක් ස්වයංක්‍රීයව ගණනය කළ ප්‍රතිඵල පෙන්වීමට අවශ්‍ය තරම් සෛල ගණනකට විහිදේ. Excel අනුව, මෙය ස්පීල්ඩ් පරාසයක් ලෙස හැඳින්වේ:

    Excel 2019 සහ පහළ

    පූර්ව ගතික Excel හි, ඉහත සූත්‍රය ලබා දෙන්නේ එක් තරඟයක් පමණි. බහු ගැලපීම් ලබා ගැනීමට, ඔබ එය අරා සූත්‍රයක් බවට පත් කළ යුතුය. මේ සඳහා, කොටු පරාසයක් තෝරා, සූත්‍රය ටයිප් කර, එය සම්පූර්ණ කිරීමට Ctrl + Shift + Enter ඔබන්න.

    මෙම ප්‍රවේශයේ අවාසියක් වන්නේ "අතිරේක සෛල" තුළ #N/A දෝෂ සමූහයක් දිස් වීමයි. . කනගාටුවට කරුණක් නම්, ඒ ගැන කිසිවක් කළ නොහැක (IFERROR හෝ IFNA ට එය නිවැරදි කළ නොහැක, අහෝ).

    සියලු ගැලපීම් එක් කොටුවකින් උපුටා ගන්න

    දත්ත තීරුවක් සකසන විට, ඉහත ප්‍රවේශය පැහැදිලිවම ක්‍රියා නොකරනු ඇත. මෙම අවස්ථාවේ දී, කදිම විසඳුමක්තනි කොටුවකින් සියලුම තරඟ ආපසු ලබා දෙනු ඇත. එය සිදු කිරීමට, RegExpExtract හි ප්‍රතිඵල TEXTJOIN ශ්‍රිතයට ලබා දී ඔබ කැමති ඕනෑම පරිසීමකයකින් ඒවා වෙන් කරන්න, කොමාවක් සහ ඉඩක් කියන්න:

    =TEXTJOIN(", ", TRUE, RegExpExtract(A5, "\d+"))

    සටහන. TEXTJOIN ශ්‍රිතය Microsoft 365, Excel 2021 සහ Excel 2019 සඳහා Excel හි පමණක් ලබා ගත හැකි බැවින්, සූත්‍රය පැරණි අනුවාද වල ක්‍රියා නොකරනු ඇත.

    Regex තන්තුවෙන් පෙළ උපුටා ගැනීමට

    මෙයින් පෙළ උපුටා ගැනීම අක්ෂරාංක තන්තුවක් Excel හි තරමක් අභියෝගාත්මක කාර්යයකි. Regex සමඟ, එය පයි තරම් පහසු වේ. ඉලක්කමක් නොවන සෑම දෙයක්ම ගැලපීමට නිෂේධනය කරන ලද පන්තියක් භාවිතා කරන්න.

    රටාව : [^\d]+

    තනි කොටු තුළ උප තන්තු ලබා ගැනීමට (ස්පිල් පරාසය) . string වෙතින් විද්‍යුත් තැපැල් ලිපිනය උපුටා ගන්න

    විවිධ තොරතුරු අඩංගු තන්තුවකින් විද්‍යුත් තැපැල් ලිපිනයක් ලබා ගැනීමට, විද්‍යුත් තැපැල් ලිපින ව්‍යුහය ප්‍රතිනිර්මාණය කරන සාමාන්‍ය ප්‍රකාශනයක් ලියන්න.

    රටාව : [\w\.\-]+@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,24}

    මෙම regex බිඳ දැමීම , මෙන්න අපට ලැබෙන දේ:

    • [\w\.\-]+ යනු අක්ෂරාංක අක්ෂර 1ක් හෝ වැඩි ගණනක්, යටි ඉරි, තිත් සහ යටිකුරු ඇතුළත් විය හැකි පරිශීලක නාමයකි.
    • @ සංකේතය
    • [A-Za-z0-9\.\-]+ යනු විශාල අකුරු සහ කුඩා අකුරු, ඉලක්කම්, ඉරි සහ තිත් (අවස්ථාවලදී) සමන්විත වසම් නාමයකි.උපවසම්). මෙහි යටි ඉරි ඉඩ නොදේ, එබැවින් ඕනෑම අකුරකට, ඉලක්කම්වලට හෝ යටි ඉරිට ගැලපෙන \w වෙනුවට විවිධ අක්ෂර කට්ටල 3ක් (A-Z a-z සහ 0-9 වැනි) භාවිතා වේ.
    • \.[A-Za-z ]{2,24} යනු ඉහළ මට්ටමේ වසමකි. විශාල අකුරු සහ කුඩා අකුරු වලින් පසුව තිතකින් සමන්විත වේ. බොහෝ ඉහළ මට්ටමේ වසම් අකුරු 3ක් දිගයි (උදා. .com .org, .edu, ආදිය), නමුත් න්‍යායාත්මකව එහි අකුරු 2 සිට 24 දක්වා (දිගුම ලියාපදිංචි TLD) අඩංගු විය හැක.

    තන්තුව A5 හි සහ රටාව A2 හි ඇතැයි උපකල්පනය කරමින්, විද්‍යුත් තැපැල් ලිපිනයක් උපුටා ගැනීමේ සූත්‍රය වන්නේ:

    =RegExpExtract(A5, $A$2)

    Regex to domain from email

    එය විට විද්‍යුත් තැපැල් වසම උකහා ගැනීමට පැමිණේ, මතකයට එන පළමු සිතුවිල්ල වන්නේ @ අක්ෂරය වහාම අනුගමනය කරන පෙළ සොයා ගැනීමට ග්‍රහණ කණ්ඩායමක් භාවිතා කිරීමයි.

    රටාව : @([A-Za-z0 -9\.\-]+\.[A-Za-z]{2,24})

    එය අපගේ RegExp ශ්‍රිතයට සේවය කරන්න:

    =RegExpExtract(A5, "@([A-Za-z0-9\.\-]+\.[A-Za-z]{2,24})")

    සහ ඔබට මෙම ප්‍රතිඵලය ලැබෙනු ඇත:

    සම්භාව්‍ය නිත්‍ය ප්‍රකාශන සමඟින්, ග්‍රහණය කරන කණ්ඩායමකින් පිටත කිසිවක් නිස්සාරණයට ඇතුළත් නොවේ. VBA RegEx වෙනස් ලෙස ක්‍රියා කරන්නේ මන්දැයි සහ "@" ග්‍රහණය කරන්නේ මන්දැයි කිසිවෙකු දන්නේ නැත. එය ඉවත් කිරීම සඳහා, ඔබට හිස් තන්තුවකින් එය ප්‍රතිස්ථාපනය කිරීමෙන් ප්‍රතිඵලයෙන් පළමු අක්ෂරය ඉවත් කළ හැකිය.

    =REPLACE(RegExpExtract(A5, "@([a-z\d][a-z\d\-\.]*\.[a-z]{2,})", 1, FALSE), 1, 1, "")

    දුරකථන අංක උපුටා ගැනීමට නිත්‍ය ප්‍රකාශනය

    දුරකථන අංක විවිධ ආකාරවලින් ලිවිය හැකිය, ඒ නිසා සියල්ල යටතේ ක්‍රියා කරන විසඳුමක් ඉදිරිපත් කිරීමට නොහැකි තරම්ය(\d{4}string වෙතින්

    දිනයක් උකහා ගැනීම සඳහා සාමාන්‍ය ප්‍රකාශනයක් තන්තුවක් තුළ දිනය දිස්වන ආකෘතිය මත රඳා පවතී. උදාහරණයක් ලෙස:

    1/1/21 හෝ 01/01/2021 වැනි දින උපුටා ගැනීමට, regex යනු: \d{1,2}\/\d{1,2}\/(\d {4}තත්වයන්. කෙසේ වෙතත්, ඔබට ඔබගේ දත්ත කට්ටලයේ භාවිතා කර ඇති සියලුම ආකෘති ලියා ඒවා ගැළපීමට උත්සාහ කළ හැක.

    මෙම උදාහරණය සඳහා, අපි මෙම ඕනෑම ආකෘතියකින් දුරකථන අංක උපුටා ගන්නා regex එකක් නිර්මාණය කරන්නෙමු:

    (123) 345-6789

    (123) 345 6789

    (123)3456789

    123- 345-6789

    123.345.6789

    123 345 6789

    1233456789

    0> රටාව : \(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b
    • පළමු කොටස \(?\d{3} ශුන්‍යයට හෝ එක් විවෘත වරහනකට පසුව ඉලක්කම් තුනකට ගැලපේ d{3}.
    • [-\. \)]* කොටස යන්නෙන් අදහස් වන්නේ 0 හෝ ඊට වැඩි වාර ගණනක් දිස්වන හතරැස් වරහන් තුළ ඇති ඕනෑම අක්ෂරයකි: යටි ඉර, කාල සීමාව, අවකාශය හෝ වැසීමේ වරහන්.
    • ඊළඟට, අපට නැවත ඉලක්කම් තුනක් ඇත d{3} ඕනෑම යටි ඉර, කාල පරිච්ඡේදයක් හෝ අවකාශයක් [-\. ]? 0 හෝ 1 වරක් දිස්වේ.
    • ඉන්පසු, ඉලක්කම් හතරක කණ්ඩායමක් ඇත \d{4}.
    • අවසාන වශයෙන්, වචන මායිමක් ඇත \b අපි දුරකථන අංකයක් බව නිර්වචනය කරයි. සොයන්නේ විශාල සංඛ්‍යාවක කොටසක් විය නොහැක.

    සම්පූර්ණ සූත්‍රය මෙම හැඩය ගනී:

    =RegExpExtract(A5, "\(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b")

    ඉහත regex කිහිපයක් ආපසු ලබාදිය හැකි බව කරුණාවෙන් සලකන්න 123) 456 7899 හෝ (123 456 7899 වැනි ව්‍යාජ-ධනාත්මක ප්‍රතිඵල. පහත අනුවාදය මෙම ගැටලු නිරාකරණය කරයි. කෙසේ වෙතත්, මෙම වාක්‍ය ඛණ්ඩය ක්‍රියා කරන්නේ VBA RegExp ශ්‍රිතවල පමණි, සම්භාව්‍ය නිත්‍ය ප්‍රකාශනවල නොවේ.

    රටාව : (\(\d{3}\)අනුලකුණු දෙකක් අතර පෙළ ඇද ගැනීම සඳහා නූල් දෙකක් අතර පෙළ උකහා ගැනීම සඳහා ද ක්‍රියා කරයි.

    උදාහරණයක් ලෙස, "පරීක්ෂණ 1" සහ "පරීක්ෂණ 2" අතර ඇති සියල්ල ලබා ගැනීමට, පහත සාමාන්‍ය ප්‍රකාශනය භාවිතා කරන්න.

    රටාව : test 1(.*?)test 2

    සම්පූර්ණ සූත්‍රය වන්නේ:

    =AblebitsRegexExtract(A5, "test 1(.*?)test 2")

    URL වෙතින් වසම උපුටා ගැනීමට Regex

    සාමාන්‍ය ප්‍රකාශන සමඟ වුවද, URL වලින් ඩොමේන් නාම උපුටා ගැනීම සුළුපටු කාර්යයක් නොවේ. උපක්‍රමය කරන ප්‍රධාන අංගය වන්නේ ග්‍රහණය නොවන කණ්ඩායම් ය. ඔබගේ අවසාන ඉලක්කය මත පදනම්ව, පහත regexes වලින් එකක් තෝරන්න.

    උප ඩොමේන් ඇතුළුව සම්පූර්ණ වසම් නාමයක් ලබා ගැනීමට

    රටාව : (?: https?\:

    මයිකල් බ්‍රවුන් යනු මෘදුකාංග මෙවලම් භාවිතයෙන් සංකීර්ණ ක්‍රියාවලීන් සරල කිරීමට දැඩි ආශාවක් ඇති කැපවූ තාක්‍ෂණ ලෝලියෙකි. තාක්‍ෂණ ක්‍ෂේත්‍රයේ දශකයකට වැඩි පළපුරුද්දක් ඇති ඔහු Microsoft Excel සහ Outlook මෙන්ම Google Sheets සහ Docs හි ඔහුගේ කුසලතා ඔප් නංවා ඇත. මයිකල්ගේ බ්ලොගය ඔහුගේ දැනුම සහ ප්‍රවීණත්වය අන් අය සමඟ බෙදා ගැනීමට කැපවී ඇත, ඵලදායිතාව සහ කාර්යක්ෂමතාව වැඩි දියුණු කිරීම සඳහා පහසුවෙන් අනුගමනය කළ හැකි ඉඟි සහ නිබන්ධන සපයයි. ඔබ පළපුරුදු වෘත්තිකයෙකු හෝ ආධුනිකයෙකු වුවද, මයිකල්ගේ බ්ලොගය මෙම අත්‍යවශ්‍ය මෘදුකාංග මෙවලම්වලින් උපරිම ප්‍රයෝජන ලබා ගැනීම සඳහා වටිනා අවබෝධයක් සහ ප්‍රායෝගික උපදෙස් ලබා දෙයි.