Excel တွင် စာကြောင်းများကို ထုတ်ယူရန် Regex (တစ်ထပ်တည်း သို့မဟုတ် အားလုံး)

  • ဒါကိုမျှဝေပါ။
Michael Brown

မာတိကာ

ဤသင်ခန်းစာတွင်၊ ပေးထားသည့်ပုံစံနှင့် ကိုက်ညီသော စာကြောင်းခွဲများကို ရှာဖွေပြီး ဖြည်ရန် Excel တွင် ပုံမှန်အသုံးအနှုန်းများကို အသုံးပြုနည်းကို သင်လေ့လာနိုင်မည်ဖြစ်သည်။

Microsoft Excel သည် စာသားများကို ထုတ်ယူရန် လုပ်ဆောင်ချက်များစွာကို ပံ့ပိုးပေးပါသည်။ ဆဲလ်များမှ ထိုလုပ်ဆောင်ချက်များသည် သင့်အလုပ်စာရွက်များရှိ စာတန်းထုတ်ယူခြင်းဆိုင်ရာ စိန်ခေါ်မှုအများစုကို ရင်ဆိုင်နိုင်သည်။ အများစု၊ ဒါပေမယ့် အားလုံးတော့ မဟုတ်ပါဘူး။ စာသားလုပ်ဆောင်ချက် မှားသောအခါ၊ ပုံမှန်ဖော်ပြချက်များသည် ကယ်တင်ခြင်းသို့ ရောက်ပါသည်။ စောင့်ပါ… Excel တွင် RegEx လုပ်ဆောင်ချက်များ မရှိပါ။ မှန်ပါသည်၊ ထည့်သွင်းထားသောလုပ်ဆောင်ချက်များမရှိပါ။ သို့သော် သင့်ကိုယ်ပိုင်များကို အသုံးပြုခြင်းမှ တားဆီးပေးမည့် မည်သည့်အရာမျှ မရှိပါ။ VBA editor တွင် အောက်ပါကုဒ်ကို ကူးထည့်ပါ။ VBA တွင် ပုံမှန်အသုံးအနှုန်းများကို ဖွင့်ရန်အတွက် ကျွန်ုပ်တို့သည် built-in Microsoft RegExp အရာဝတ္တုကို အသုံးပြုနေပါသည်။

Public Function RegExpExtract(စာသားအဖြစ် String၊ ပုံစံအတိုင်း String၊ Optional instance_num As Integer = 0၊ Optional match_case As Boolean = True) မှိန် text_matches() As String Dim matches_index As Integer On Error GoTo ErrHandl RegExpExtract = "" Set regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = ပုံစံ regex.Global = True regex.MultiLine = True If True = match_case. ထို့နောက် regex. ignorecase = False Else regex.ignorecase = True End If Set matches = regex.Execute(text) If 0 < matches.Count Then If (0 = instance_num) ထို့နောက် ReDim text_matches(matches.Count - 1, 0) For matches_index = 0 ToVBA RegExp၊ ပိုမိုအားကောင်းသည့် .NET Regex လုပ်ဆောင်ချက်များကို ဆွေးနွေးထားသည့် နောက်အပိုင်းကို ဖတ်ရန် ကျွန်ုပ်တိုက်တွန်းပါသည်။

Excel တွင် စာသားထုတ်ယူရန် စိတ်ကြိုက် .NET အခြေခံ Regex လုပ်ဆောင်ချက်

ထို VBA RegExp လုပ်ဆောင်ချက်များနှင့် မတူဘဲ၊ မည်သည့် Excel အသုံးပြုသူမဆို ရေးသားနိုင်သည်၊ .NET RegEx သည် developer ၏နယ်ပယ်ဖြစ်သည်။ Microsoft .NET Framework သည် Perl 5 နှင့် တွဲဖက်အသုံးပြုနိုင်သော ပုံမှန်အသုံးအနှုန်းအထားအသို အပြည့်အစုံကို ပံ့ပိုးပေးပါသည်။ ဤဆောင်းပါးသည် သင့်အား ထိုသို့သောလုပ်ဆောင်ချက်များကို မည်ကဲ့သို့ရေးရမည်ကို သင်ကြားပေးမည်မဟုတ်ပါ (ကျွန်ုပ်သည် ပရိုဂရမ်မာမဟုတ်ပါ၊ ၎င်းကို မည်သို့လုပ်ဆောင်ရမည်ကို အနည်းငယ်မျှ စိတ်ကူးမရှိပါ :)

စံ .NET RegEx အင်ဂျင်ဖြင့် လုပ်ဆောင်ခဲ့သော အစွမ်းထက်သော လုပ်ဆောင်မှုလေးခုကို ကျွန်ုပ်တို့၏ developer များမှ ရေးသားထားပြီး Ultimate Suite တွင် ထည့်သွင်းထားပါသည်။ အောက်တွင်၊ Excel တွင် စာသားကို ထုတ်ယူရန်အတွက် အထူးထုတ်လုပ်ထားသည့် လက်တွေ့ကျသောအသုံးပြုမှုအချို့ကို ကျွန်ုပ်တို့ သရုပ်ပြပါမည်။

အကြံပြုချက်။ .NET Regex syntax အကြောင်း အချက်အလက်အတွက်၊ ကျေးဇူးပြု၍ .NET ပုံမှန်ဖော်ပြမှုဘာသာစကားကို ကိုးကားပါ။

ပုံမှန်အသုံးအနှုန်းများကိုအသုံးပြု၍ Excel တွင် stings ထုတ်ယူနည်း

သင့်တွင် Ultimate Suite ၏နောက်ဆုံးထွက်ဗားရှင်းကို ထည့်သွင်းထားသည်ဟု ယူဆပါက၊ ပုံမှန်အသုံးအနှုန်းများကိုအသုံးပြုကာ စာသားကို ဖြည်ခြင်းသည် ဤအဆင့်နှစ်ဆင့်သို့ ကျဆင်းသွားသည်-

  1. Ablebits Data tab တွင်၊ Text group တွင်၊ Regex Tools ကိုနှိပ်ပါ။
  2. Regex Tools pane တွင်၊ အရင်းအမြစ်ဒေတာကို ရွေးချယ်ပါ၊ သင်၏ Regex ပုံစံကို ရိုက်ထည့်ကာ Extract option ကို ရွေးပါ။ တန်ဖိုးမဟုတ်ဘဲ စိတ်ကြိုက်လုပ်ဆောင်မှုတစ်ခုအဖြစ် ရလဒ်ရရှိရန် ဖော်မြူလာအဖြစ် ထည့်သွင်းပါ စစ်ဆေးမှုကို ရွေးချယ်ပါ။သတျတော။ ပြီးပါက Extract ခလုတ်ကို နှိပ်ပါ။

ရလဒ်များသည် သင့်မူရင်းဒေတာ၏ညာဘက်ရှိ ကော်လံအသစ်တွင် ပေါ်လာလိမ့်မည်-

AblebitsRegexExtract syntax

ကျွန်ုပ်တို့၏စိတ်ကြိုက်လုပ်ဆောင်ချက်တွင် အောက်ပါအစီအမံများပါရှိသည်။

AblebitsRegexExtract(ကိုးကား၊ ပုံမှန်_ဖော်ပြချက်)

Where:

  • ကိုးကား (လိုအပ်သည်) - အရင်းအမြစ်စာကြောင်းပါရှိသော ဆဲလ်ကို ရည်ညွှန်းပါသည်။
  • Regular_expression (လိုအပ်သည်) - ကိုက်ညီရန် regex ပုံစံ။

အရေးကြီးသောမှတ်ချက်။ လုပ်ဆောင်ချက်သည် Excel အတွက် Ultimate Suite ထည့်သွင်းထားသည့် စက်များတွင်သာ အလုပ်လုပ်ပါသည်။

အသုံးပြုမှုမှတ်စုများ

သင်၏ သင်ယူမှုမျဉ်းကို ချောမွေ့စေပြီး သင့်အတွေ့အကြုံကို ပိုမိုနှစ်သက်စေရန်အတွက်၊ ဤအချက်များကို အာရုံစိုက်ပါ-

  1. ဖော်မြူလာတစ်ခုဖန်တီးရန်၊ သင်သည် ကျွန်ုပ်တို့၏ Regex Tools သို့မဟုတ် Excel ၏ Insert function dialog ကိုသုံးနိုင်သည်၊ သို့မဟုတ် ဆဲလ်တစ်ခုတွင် လုပ်ဆောင်ချက်အမည်အပြည့်အစုံကို ရိုက်ထည့်နိုင်သည်။ ဖော်မြူလာကို ထည့်သွင်းပြီးသည်နှင့် သင်သည် မည်သည့် မူရင်းဖော်မြူလာကဲ့သို့ (တည်းဖြတ်၊ ကူးယူ သို့မဟုတ် ရွှေ့ရန်) စီမံနိုင်ပါသည်။
  2. Regex Tools pane တွင် သင်ထည့်သွင်းသည့်ပုံစံသည် 2nd argument သို့သွားပါသည်။ သီးခြားဆဲလ်တစ်ခုတွင် ပုံမှန်အသုံးအနှုန်းတစ်ခုကို ထားရှိရန်လည်း ဖြစ်နိုင်သည်။ ဤကိစ္စတွင်၊ 2nd အငြင်းအခုံအတွက် ဆဲလ်ကိုးကားချက်ကိုသာ အသုံးပြုပါ။
  3. လုပ်ဆောင်ချက်သည် ပထမဆုံးတွေ့ရှိသောကိုက်ညီမှု ကို ထုတ်ယူပါသည်။
  4. မူရင်းအားဖြင့်၊ လုပ်ဆောင်ချက်သည် ဖြစ်ရပ်မှန်ဖြစ်သည် -sensitive ။ case-insensitive ကိုက်ညီမှုအတွက်၊ (?i) ပုံစံကို အသုံးပြုပါ။
  5. ကိုက်ညီမှုတစ်ခုကို ရှာမတွေ့ပါက၊ #N/A အမှားသည်ပြန်ပေးသည်။

အက္ခရာနှစ်ခုကြားရှိ စာကြောင်းနှစ်ကြောင်းကို ဖြည်ရန် Regex

အက္ခရာနှစ်ခုကြားတွင် စာသားရရန်၊ ရိုက်ကူးသည့်အုပ်စု သို့မဟုတ် လှည့်ပတ်ကြည့်ရှုခြင်းကို သုံးနိုင်သည်။

ကြပါစို့။ ကွင်းစကွင်းပိတ်များကြားတွင် စာသားကို ထုတ်ယူရန် သင်ရှာဖွေနေသည်ဟု ပြောပါ။ ဖမ်းသည့်အဖွဲ့သည် အလွယ်ကူဆုံးနည်းလမ်းဖြစ်သည်။

Pattern 1 : \[(.*?)\]

အပြုသဘောဆောင်သောအကြည့်နှင့် ရှေ့သို့ကြည့်ခြင်းဖြင့်၊ ရလဒ်သည် အတိအကျဖြစ်လိမ့်မည် အတူတူပါပဲ။

Pattern 2 : (?<=\[)(.*?)(?=\])

ကျွန်ုပ်တို့၏ ရိုက်ကူးရေးအဖွဲ့ကို ကျေးဇူးပြု၍ သတိပြုပါ။ (.*?) ဘောင်နှစ်ခုကြားရှိ စာသားအတွက် ပျင်းရိရှာဖွေမှု ကို လုပ်ဆောင်သည် - ပထမ [မှ ပထမ]။ မေးခွန်းအမှတ်အသားမပါသော ရိုက်ကူးရေးအဖွဲ့သည် လောဘကြီးသောရှာဖွေမှု ကို လုပ်ဆောင်ပြီး ပထမ [နောက်ဆုံးမှ နောက်ဆုံးအထိ] အားလုံးကို ဖမ်းယူမည်ဖြစ်သည်။

A2 ရှိ ပုံစံဖြင့်၊ ဖော်မြူလာသည် အတိုင်းဖြစ်သည်။ အောက်ပါအတိုင်း-

=AblebitsRegexExtract(A5, $A$2)

ကိုက်ညီမှုအားလုံးကိုရယူနည်း

ဖော်ပြထားသည့်အတိုင်း၊ AbblebitsRegexExtract လုပ်ဆောင်ချက်သည် တစ်ထပ်တည်းကိုသာ ထုတ်ယူနိုင်သည်။ ကိုက်ညီမှုအားလုံးကို ရယူရန်၊ အစောပိုင်းတွင် ကျွန်ုပ်တို့ ဆွေးနွေးခဲ့သည့် VBA လုပ်ဆောင်ချက်ကို အသုံးပြုနိုင်သည်။ သို့သော်၊ သတိပေးချက်တစ်ခုရှိသည် - VBA RegExp သည် အုပ်စုများကို ဖမ်းယူခြင်းကို မပံ့ပိုးပါ၊ ထို့ကြောင့် အထက်ဖော်ပြပါပုံစံသည် ကျွန်ုပ်တို့၏ကိစ္စတွင် ကွင်းစကွင်းပိတ်များကို "နယ်နိမိတ်" စာလုံးများကို ပြန်ပေးပါမည်။

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

ဖယ်ရှားရန် ကွင်းစကွင်းပိတ်များ၊ ၎င်းတို့ကို အလွတ်စာကြောင်းများ ("") ဖြင့် အစားထိုးပါ-

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

ပိုမိုကောင်းမွန်စွာဖတ်ရှုနိုင်စေရန်အတွက်၊ ကျွန်ုပ်တို့သည် ကန့်သတ်ချက်အတွက် ကော်မာကို အသုံးပြုနေပါသည်။

စာကြောင်းနှစ်ခုကြားရှိ စာသားကို ထုတ်ယူရန် Regex

ကျွန်ုပ်တို့ လုပ်ဆောင်ခဲ့သော ချဉ်းကပ်မှု၎င်းကို စာသားအတိုင်းအနက်ပြန်ဆိုပါ။

  • (?:[A-Za-z\-\.]{2,255}\.)? - တတိယအဆင့်၊ စတုတ္ထအဆင့် စသည်ဖြင့် ဒိုမိန်းများကို ခွဲခြားသတ်မှတ်ရန် မဖမ်းဆုပ်ထားသောအဖွဲ့ (ရှိပါက ကျွန်ုပ်တို့၏နမူနာ URL တွင် မိုဘိုင်း )။ ပထမပုံစံတွင်၊ ၎င်းအား ထုတ်ယူမှုတွင် ထည့်သွင်းထားသော ဒိုမိန်းခွဲများအားလုံးကို ရယူရန် ပိုမိုကြီးမားသော ဖမ်းယူရေးအုပ်စုအတွင်း ထည့်သွင်းထားသည်။ ဒိုမိန်းခွဲတစ်ခုသည် စာလုံး 2 လုံးမှ 255 လုံးအထိရှည်နိုင်ပြီး၊ ထို့ကြောင့် {2,255} ပမာဏသတ်မှတ်မှုဖြစ်သည်။
  • ([A-Za-z\-]{1,63}\.[A-Za-z] {2,24}) - ဒုတိယအဆင့်ဒိုမိန်း ( ablebits ) နှင့် ထိပ်တန်းအဆင့်ဒိုမိန်း ( com ) ကို ထုတ်ယူရန် အုပ်စုကို ဖမ်းယူခြင်း။ ဒုတိယအဆင့်ဒိုမိန်းတစ်ခု၏ အမြင့်ဆုံးအရှည်မှာ စာလုံးရေ 63 လုံးဖြစ်သည်။ လက်ရှိတည်ရှိနေသည့် အရှည်ဆုံးထိပ်တန်းဒိုမိန်းတွင် စာလုံး 24 လုံးပါရှိသည်။
  • A2 တွင် ပုံမှန်ဖော်ပြချက်ထည့်သွင်းသည့်အပေါ်မူတည်၍ အောက်ပါဖော်မြူလာသည် မတူညီသောရလဒ်များကို ထုတ်ပေးလိမ့်မည်-

    =AblebitsRegexExtract(A5, $A$2)

    ဒိုမိန်းခွဲများအားလုံးဖြင့် အပြည့်အဝ domain name ကို ထုတ်ယူရန်

    Regex :

    Regex အား ဒိုမိန်းခွဲများမပါဘဲ ဒုတိယအဆင့် ဒိုမိန်း ကို ထုတ်ယူရန်-

    ၎င်းသည် ပုံမှန်အသုံးအနှုန်းများကို အသုံးပြု၍ Excel တွင် စာသားအစိတ်အပိုင်းများကို ထုတ်ယူနည်း။ ကျွန်ုပ်တို့၏ဘလော့ဂ်တွင် ဖတ်ရှုပြီး နောက်အပတ်တွင် သင့်ကိုတွေ့ရန် စောင့်မျှော်ပေးသည့်အတွက် ကျေးဇူးတင်ပါသည်။

    ရရှိနိုင်သောဒေါင်းလုဒ်များ

    Excel Regex Extract နမူနာများ (.xlsm ဖိုင်)

    Ultimate Suite အစမ်းသုံးဗားရှင်း (.exe ဖိုင်)

    \b(0?[0-9]matches.Count - 1 text_matches(matches_index, 0) = matches.Item(matches_index) နောက်တစ်ခု matches_index RegExpExtract = text_matches Else RegExpExtract = matches.Item(instance_num - 1) End If End If End if Exit Function ErrHandl: RegExpExtract = ErrVue(Function)

    သင် VBA နှင့်ပတ်သက်သော အတွေ့အကြုံအနည်းငယ်ရှိပါက၊ အဆင့်ဆင့်အသုံးပြုသူလမ်းညွှန်သည် အထောက်အကူဖြစ်နိုင်သည်- Excel တွင် VBA ကုဒ်ထည့်သွင်းနည်း။

    မှတ်ချက်။ လုပ်ဆောင်ချက်အလုပ်လုပ်ရန်အတွက်၊ သင့်ဖိုင်ကို macro-enabled workbook (.xlsm) အဖြစ် သိမ်းဆည်းရန် သေချာပါစေ။

    RegExpExtract အထားအသို

    RegExpExtract လုပ်ဆောင်ချက်သည် ပုံမှန်အသုံးအနှုန်းတစ်ခုနှင့် ကိုက်ညီသည့် တန်ဖိုးများအတွက် ထည့်သွင်းမှုစာကြောင်းကို ရှာဖွေပြီး တိုက်ဆိုင်မှုတစ်ခု သို့မဟုတ် အားလုံးကို ထုတ်ယူသည်။

    လုပ်ဆောင်ချက်တွင် အောက်ပါအစီအမံများ ပါရှိသည်။ :

    RegExpExtract(စာသား၊ ပုံစံ၊ [instance_num]၊ [match_case])

    Where:

    • Text (လိုအပ်သည်) - ရှာဖွေရန် စာသား စာကြောင်း။
    • Pattern (လိုအပ်သည်) - ကိုက်ညီရန် ပုံမှန်ဖော်ပြချက်။ ဖော်မြူလာတစ်ခုတွင် တိုက်ရိုက်ထည့်သွင်းသည့်အခါ၊ ပုံစံကို ကိုးကားချက်အမှတ်အသားနှစ်ခုဖြင့် ဖုံးအုပ်ထားသင့်သည်။
    • Instance_num (ချန်လှပ်ထားနိုင်သည်) - မည်သည့်ဥပမာကို ထုတ်ယူရမည်ကို ဖော်ပြသည့် အမှတ်စဉ်နံပါတ်။ ချန်လှပ်ထားပါက၊ တွေ့ရှိထားသည့် ကိုက်ညီမှုအားလုံးကို ပြန်ပေးသည် (မူလ)။
    • Match_case (ချန်လှပ်ထားနိုင်သည်) - စာသားကိစ္စနှင့် ကိုက်ညီမှုရှိမရှိကို သတ်မှတ်သည်။ အမှန် သို့မဟုတ် ချန်လှပ်ထားပါက (မူလ)၊ ဖြစ်ရပ်မှန်-ထိခိုက်လွယ်သော ကိုက်ညီမှုကို လုပ်ဆောင်သည်။ FALSE - စာလုံးအသေးမရှိလျှင်။

    လုပ်ဆောင်ချက်သည် Excel 365၊ Excel 2021၊ Excel ဗားရှင်းအားလုံးတွင် အလုပ်လုပ်သည်2019၊ Excel 2016၊ Excel 2013 နှင့် Excel 2010။

    RegExpExtract အကြောင်း သိထားသင့်သည့်အချက် ၄ ချက်

    သင်၏ Excel တွင် လုပ်ဆောင်ချက်ကို ထိထိရောက်ရောက်အသုံးပြုရန်၊ သတိထားရမည့် အရေးကြီးအချက်အချို့ ရှိသည်-

    1. ပုံမှန်အားဖြင့်၊ လုပ်ဆောင်ချက်သည် တွေ့ရှိရသော ကိုက်ညီမှုများ ကို ဤဥပမာတွင် ပြထားသည့်အတိုင်း အိမ်နီးချင်းဆဲလ်များသို့ ပြန်ပေးသည်။ တိကျသောဖြစ်ပျက်မှုတစ်ခုရရန်၊ သက်ဆိုင်ရာနံပါတ်တစ်ခုအား instance_num အငြင်းအခုံသို့ ပေးဆောင်ပါ။
    2. ပုံမှန်အားဖြင့်၊ လုပ်ဆောင်ချက်သည် အသေးစိတ်ထိခိုက်လွယ်သော ဖြစ်သည်။ case-insensitive ကိုက်ညီမှုအတွက်၊ match_case အကြောင်းပြချက်ကို FALSE သို့ သတ်မှတ်ပါ။ VBA ကန့်သတ်ချက်များကြောင့်၊ case-sensitive construct (?i) သည် အလုပ်မလုပ်ပါ။
    3. မှန်ကန်သောပုံစံကို ရှာမတွေ့ပါက ၊ function သည် ဘာမှပြန်မလာပါ (empty string)
    4. ပုံစံသည် မမှန်ကန်ပါက ၊ #VALUE။ အမှားဖြစ်သွားသည်။

    သင့်အလုပ်စာရွက်များတွင် ဤစိတ်ကြိုက်လုပ်ဆောင်ချက်ကို သင်စတင်အသုံးမပြုမီ၊ ၎င်းသည် အဘယ်အရာလုပ်ဆောင်နိုင်သည်ကို သင်နားလည်ရန်လိုအပ်ပါသည်။ အောက်ဖော်ပြပါ ဥပမာများသည် အသုံးများသော အသုံးအနှုန်းအချို့ကို ခြုံငုံပြီး Dynamic Array Excel (Microsoft 365 နှင့် Excel 2021) နှင့် သမားရိုးကျ Excel (2019 နှင့် အထက်ဗားရှင်းများ) တွင် အဘယ်ကြောင့်ကွာခြားနိုင်သည်ကို ရှင်းပြပါ။

    မှတ်ချက်။ regex ဥပမာများကို နတ်သမီး ရိုးရှင်းသော ဒေတာအစုံများအတွက် ရေးသားထားသည်။ ၎င်းတို့သည် သင်၏စစ်မှန်သော အလုပ်စာရွက်များတွင် အပြစ်အနာအဆာကင်းစွာ လုပ်ဆောင်နိုင်မည်ဟု ကျွန်ုပ်တို့ အာမမခံနိုင်ပါ။ regex နှင့် အတွေ့အကြုံရှိသူများသည် ပုံမှန်အသုံးအနှုန်းများကို ရေးသားခြင်းသည် ပြီးပြည့်စုံခြင်းသို့ ဘယ်တော့မှ မပြီးဆုံးနိုင်သောလမ်းဖြစ်ကြောင်း သဘောတူလိမ့်မည် - အမြဲတမ်းလိုလို ပြုလုပ်ရန်နည်းလမ်းတစ်ခုရှိသည်။၎င်းသည် ပိုမိုပြေပြစ်သော သို့မဟုတ် ပိုမိုကျယ်ပြန့်သော input data များကို ကိုင်တွယ်နိုင်စွမ်းရှိသည်။

    စာကြောင်းမှ နံပါတ်ကို ထုတ်ယူရန် Regex

    "ရိုးရှင်းမှ ရှုပ်ထွေးသည်" ဟူသော သင်ကြားမှု၏ အခြေခံအကျဆုံးကို လိုက်နာခြင်းဖြင့် ကျွန်ုပ်တို့သည် အလွန်ရိုးရှင်းသော ကိစ္စတစ်ခုဖြင့် စတင်ပါမည်- string မှ နံပါတ်ကို ထုတ်ယူပါ။

    ၎င်း သင်ဆုံးဖြတ်ရမည့် ပထမဆုံးအချက်မှာ မည်သည့်နံပါတ်ကို ထုတ်ယူရမည်ဖြစ်သည်- ပထမ၊ နောက်ဆုံး၊ တိကျသော ဖြစ်ပျက်မှု သို့မဟုတ် နံပါတ်များအားလုံး။

    ပထမနံပါတ်ကို ထုတ်ယူပါ

    ၎င်းသည် regex ရနိုင်သလောက် ရိုးရှင်းပါသည်။ \d သည် 0 မှ 9 အထိ မည်သည့်ဂဏန်းကိုမဆို ဆိုလိုပြီး + သည် တစ်ကြိမ် သို့မဟုတ် ထို့ထက်ပိုသော အကြိမ်များကို ဆိုလိုသည်၊ ကျွန်ုပ်တို့၏ ပုံမှန်အသုံးအနှုန်းသည် ဤပုံစံကို ယူပါသည်-

    Pattern : \d+

    Set instance_num မှ 1 သို့ သင်အလိုရှိသောရလဒ်ကို ရရှိပါမည်-

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

    A5 သည် မူရင်းစာကြောင်းဘယ်မှာရှိသနည်း။

    အဆင်ပြေစေရန်၊ သင်ထည့်သွင်းနိုင်ပါသည်။ ကြိုတင်သတ်မှတ်ထားသောဆဲလ်တစ်ခုရှိ ပုံစံ ($A$2) နှင့် $ သင်္ကေတဖြင့် ၎င်း၏လိပ်စာကို လော့ခ်ချပါ-

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

    နောက်ဆုံးနံပါတ်ရယူပါ

    စာတန်းတစ်ခုတွင် နောက်ဆုံးနံပါတ်ကို ထုတ်ယူရန် ဤတွင်အသုံးပြုရမည့်ပုံစံမှာ-

    Pattern : (\d+)(?!.*\d)

    လူသားဘာသာစကားသို့ ဘာသာပြန်သည် ၎င်းကဆိုသည်။ အခြားနံပါတ်များဖြင့် မလိုက်နိုင်သော (မည်သည့်နေရာတွင်မဆို၊ ချက်ချင်းမဟုတ်ဘဲ) နံပါတ်တစ်ခုကို ရှာပါ။ ၎င်းကိုဖော်ပြရန်၊ ကျွန်ုပ်တို့သည် အပျက်သဘောဆောင်သောရှုထောင့် (?!.*\d) ကိုအသုံးပြုနေသည်ဆိုလိုသည်မှာ ၎င်းရှေ့တွင် အခြားစာလုံးမည်မျှရှိသည်ဖြစ်စေ အခြားဂဏန်း (\d) မရှိစေရဟု ဆိုလိုပါသည်။

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

    အကြံပြုချက်များ-

    • တိကျသောဖြစ်ပျက်မှု ကိုရယူရန်၊ ပုံစံ နှင့် သင့်လျော်သော အမှတ်စဉ်အတွက် \d+ ကို အသုံးပြုပါ။ instance_num အတွက် နံပါတ်။
    • ဂဏန်းများအားလုံး ကို ထုတ်ယူရန် ဖော်မြူလာကို နောက်ဥပမာတွင် ဆွေးနွေးထားပါသည်။

    တူညီမှုအားလုံးကို ထုတ်ယူရန် Regex

    ကျွန်ုပ်တို့၏နမူနာကို အနည်းငယ်ထပ်၍ တွန်းကြည့်ပါက၊ တစ်ခုတည်းမဟုတ်ဘဲ စာကြောင်းတစ်ခုမှ ဂဏန်းများအားလုံးကို ရယူလိုသည်ဆိုပါစို့။

    သင်မှတ်မိသလောက်၊ ထုတ်ယူလိုက်သော ကိုက်ညီမှုအရေအတွက်ကို စိတ်ကြိုက်ရွေးချယ်နိုင်သည် instance_num အငြင်းအခုံ။ ပုံသေသည် အားလုံးကိုက်ညီသောကြောင့် သင်သည် ဤကန့်သတ်ချက်ကို ချန်လှပ်ထားပါသည်-

    =RegExpExtract(A2, "\d+")

    ဖော်မြူလာသည် ဆဲလ်တစ်ခုတည်းအတွက် လှပစွာအလုပ်လုပ်သည်၊ သို့သော် လုပ်ဆောင်ချက်သည် Dynamic Array Excel နှင့် dynamic မဟုတ်သောဗားရှင်းများတွင် ကွဲပြားပါသည်။

    Excel 365 နှင့် Excel 2021

    ပြောင်းလဲနေသော ခင်းကျင်းမှုများကို ပံ့ပိုးပေးသောကြောင့်၊ တွက်ချက်ထားသော ရလဒ်အားလုံးကို ပြသရန် လိုအပ်သလောက် ပုံမှန်ဖော်မြူလာသည် ဆဲလ်များစွာထဲသို့ အလိုအလျောက် ယိုဖိတ်သွားသည်။ Excel ၏စည်းကမ်းချက်များအရ၊ ၎င်းကို spilled range ဟုခေါ်သည်-

    Excel 2019 နှင့် အောက်

    ယခင်-ပြောင်းလဲနေသော Excel တွင်၊ အထက်ဖော်ပြပါပုံသေနည်းသည် တစ်ထပ်တည်းကျရုံသာဖြစ်သည်။ ကိုက်ညီမှုများစွာရရန်၊ ၎င်းကို array ဖော်မြူလာအဖြစ် ပြုလုပ်ရန် လိုအပ်သည်။ ၎င်းအတွက်၊ ဆဲလ်အကွာအဝေးကိုရွေးချယ်ပါ၊ ဖော်မြူလာကိုရိုက်ပြီး ၎င်းကို အပြီးသတ်ရန် Ctrl + Shift + Enter နှိပ်ပါ။

    ဤချဉ်းကပ်မှု၏ အားနည်းချက်မှာ "extra cells" တွင် #N/A အမှားအယွင်းများ အစုအဝေးတစ်ခုဖြစ်သည်။ . ဝမ်းနည်းစရာမှာ ၎င်းနှင့်ပတ်သက်၍ မည်သည့်အရာမှ လုပ်ဆောင်နိုင်မည် မဟုတ်ပါ (IFERROR နှင့် IFNA သည် ၎င်းကို မပြင်နိုင်၊ ဖြစ်ချင်တော့)။

    ဆဲလ်တစ်ခုအတွင်း ကိုက်ညီမှုအားလုံးကို ထုတ်ယူပါ

    ဒေတာကော်လံကို လုပ်ဆောင်သည့်အခါ၊ အထက်ပါနည်းလမ်းသည် သိသိသာသာ အလုပ်မဖြစ်ပါ။ ဤကိစ္စတွင်၊ စံပြဖြေရှင်းချက်ဖြစ်သည်။ဆဲလ်တစ်ခုတည်းတွင် ကိုက်ညီမှုအားလုံးကို ပြန်ပေးလိမ့်မည်။ ၎င်းကို ပြီးမြောက်ရန်၊ RegExpExtract ၏ရလဒ်များကို TEXTJOIN လုပ်ဆောင်ချက်သို့ ပေးဆောင်ပြီး ၎င်းတို့ကို သင်နှစ်သက်သည့် အကန့်အသတ်ဖြင့် ပိုင်းခြားပါ၊ ကော်မာနှင့် နေရာလွတ်တစ်ခုပြောပါ-

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

    မှတ်ချက်။ TEXTJOIN လုပ်ဆောင်ချက်ကို Microsoft 365၊ Excel 2021 နှင့် Excel 2019 အတွက် Excel တွင်သာ ရနိုင်သောကြောင့် ဖော်မြူလာသည် ဗားရှင်းအဟောင်းများတွင် အလုပ်မလုပ်ပါ။

    စာကြောင်းမှ စာသားကိုထုတ်ယူရန် Regex

    စာသားမှ ထုတ်ယူခြင်း အက္ခရာဂဏန်းစာကြောင်းတစ်ခုသည် Excel တွင်အတော်လေးခက်ခဲသောအလုပ်တစ်ခုဖြစ်သည်။ regex ဖြင့်၎င်းသည် pie ကဲ့သို့လွယ်ကူသည်။ ဂဏန်းမဟုတ်သော အရာအားလုံးကို တိုက်ဆိုင်ရန် Negated class ကိုသုံးပါ။

    Pattern - [^\d]+

    ဆဲလ်တစ်ခုစီရှိ စာကြောင်းခွဲများရယူရန် (spill range) ဖော်မြူလာမှာ-

    =RegExpExtract(A5, "[^\d]+")

    ကိုက်ညီမှုအားလုံးကို ဆဲလ်တစ်ခုသို့ထုတ်ပေးရန်၊ ဤကဲ့သို့သော TEXTJOIN တွင် RegExpExtract လုပ်ဆောင်ချက်ကို အသိုက်ဖွဲ့လိုက်ပါ-

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

    Regex သို့ string မှ အီးမေးလ်လိပ်စာကို ထုတ်ယူပါ

    အချက်အလက်များစွာပါဝင်သော စာကြောင်းတစ်ခုမှ အီးမေးလ်လိပ်စာတစ်ခုကို ထုတ်ယူရန်၊ အီးမေးလ်လိပ်စာဖွဲ့စည်းပုံကို ပုံတူကူးထားသည့် ပုံမှန်အသုံးအနှုန်းတစ်ခုရေးပါ။

    ပုံစံ : [\w\.\-]+@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,24}

    ဤ regex ကို ဖြိုခွဲခြင်း ဤသည်မှာ ကျွန်ုပ်တို့ရရှိသောအရာဖြစ်သည်-

    • [\w\.\-]+ သည် အက္ခရာဂဏန်း စာလုံး ၁ လုံး သို့မဟုတ် ထို့ထက်ပိုသော အက္ခရာများ၊ အောက်မှတ်များ၊ အစက်များနှင့် တုံးတိုများ ပါဝင်နိုင်သည့် သုံးစွဲသူအမည်ဖြစ်သည်။
    • @ သင်္ကေတ
    • [A-Za-z0-9\.\-]+ သည်- စာလုံးအကြီးနှင့် အသေး၊ ဂဏန်းများ၊ တုံးတိုနှင့် အစက်များပါ၀င်သည့် ဒိုမိန်းအမည်တစ်ခုဖြစ်သည် (ကိစ္စရပ်တွင်၊subdomains များ)။ အောက်ခံအမှတ်များကို ဤနေရာတွင် ခွင့်မပြုပါ၊ ထို့ကြောင့် မည်သည့်အက္ခရာ၊ ဂဏန်း သို့မဟုတ် အောက်ရမှတ်များနှင့် ကိုက်ညီသော \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

    ၎င်းသည် မည်သည့်အချိန်တွင်၊ အီးမေးလ်ဒိုမိန်းကို ထုတ်ယူခြင်းသို့ ရောက်ရှိလာသည်၊ စိတ်ထဲပေါ်လာသည့် ပထမဆုံးအတွေးမှာ @ ဇာတ်ကောင်နောက်လိုက်သည့် စာသားကို ချက်ချင်းရှာဖွေရန် ဖမ်းယူသည့်အဖွဲ့ကို အသုံးပြုခြင်းဖြစ်သည်။

    ပုံစံ : @([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

    ပုံစံ : \(?\d{3}[-\. \)]*\d{3}[-\။ ]?\d{4}\b

    • ပထမအပိုင်း \(?\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 ကဲ့သို့သော false-positive ရလဒ်များ။ အောက်ဖော်ပြပါဗားရှင်းသည် ဤပြဿနာများကို ဖြေရှင်းပေးပါသည်။ သို့သော်၊ ဤ syntax သည် ဂန္တဝင်ပုံမှန်အသုံးအနှုန်းများတွင်မဟုတ်ဘဲ VBA RegExp လုပ်ဆောင်ချက်များတွင်သာ အလုပ်လုပ်ပါသည်။

    Pattern : (\(\d{3}\)စာလုံးနှစ်လုံးကြားမှ စာသားကို ဆွဲထုတ်ရန်အတွက် out သည် စာကြောင်းနှစ်ခုကြားရှိ စာသားကို ထုတ်ယူရန်အတွက်လည်း လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။

    ဥပမာ၊ "test 1" နှင့် "test 2" အကြား အရာအားလုံးကို ရယူရန် အောက်ပါ ပုံမှန်အသုံးအနှုန်းကို အသုံးပြုပါ။

    Pattern - စမ်းသပ်မှု 1.*?)test 2

    ပြီးပြည့်စုံသော ဖော်မြူလာမှာ-

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

    Regex သည် URL မှ ဒိုမိန်းကို ထုတ်ယူရန်

    ပုံမှန်အသုံးအနှုန်းများဖြင့်ပင်၊ URLs များမှ ဒိုမိန်းအမည်များကို ထုတ်ယူခြင်းသည် အသေးအဖွဲအလုပ်မဟုတ်ပါ။ လှည့်ကွက်ပြုလုပ်သည့် အဓိကအချက်မှာ ဖမ်းခြင်းမပြုသော အုပ်စုများဖြစ်သည်။ သင်၏ အန္တိမပန်းတိုင်ပေါ် မူတည်၍ အောက်ပါ regexes များထဲမှ တစ်ခုကို ရွေးပါ။

    ဒိုမိန်းခွဲများ အပါအဝင် အပြည့်အဝ domain name ရရှိရန်

    Pattern : (?: https?\:

    မိုက်ကယ်ဘရောင်းသည် ဆော့ဖ်ဝဲလ်ကိရိယာများကို အသုံးပြု၍ ရှုပ်ထွေးသောလုပ်ငန်းစဉ်များကို ရိုးရှင်းအောင်ပြုလုပ်လိုသော သီးသန့်နည်းပညာကို ဝါသနာပါသူတစ်ဦးဖြစ်သည်။ နည်းပညာနယ်ပယ်တွင် ဆယ်စုနှစ်တစ်ခုကျော်အတွေ့အကြုံဖြင့် Microsoft Excel နှင့် Outlook အပြင် Google Sheets နှင့် Docs တို့တွင် သူ၏ကျွမ်းကျင်မှုကို ချီးမြှောက်ခဲ့သည်။ Michael ၏ဘလော့ဂ်သည် ကုန်ထုတ်စွမ်းအားနှင့် ထိရောက်မှုတိုးတက်စေရန်အတွက် လိုက်လျောရလွယ်ကူသော အကြံပြုချက်များနှင့် သင်ခန်းစာများကို အခြားသူများအား မျှဝေရန် ရည်ရွယ်ပါသည်။ သင်သည် ကျွမ်းကျင်သော သို့မဟုတ် စတင်သူဖြစ်ပါစေ၊ Michael ၏ဘလော့ဂ်သည် ဤမရှိမဖြစ်လိုအပ်သောဆော့ဖ်ဝဲလ်ကိရိယာများထဲမှ အကောင်းဆုံးကိုရယူရန်အတွက် အဖိုးတန်သောထိုးထွင်းသိမြင်မှုနှင့် လက်တွေ့ကျသောအကြံဉာဏ်များကို ပေးပါသည်။