ഉള്ളടക്ക പട്ടിക
ഈ ട്യൂട്ടോറിയലിൽ, Excel-ൽ സ്ട്രിംഗുകൾ പൊരുത്തപ്പെടുത്തുന്നതിന് regex എങ്ങനെ ഉപയോഗിക്കാമെന്ന് ഞങ്ങൾ ആഴത്തിൽ പരിശോധിക്കും.
നിങ്ങൾക്ക് ഒരു ശ്രേണിയിൽ ഒരു നിശ്ചിത മൂല്യം കണ്ടെത്തേണ്ടിവരുമ്പോൾ സെല്ലുകളുടെ, നിങ്ങൾ MATCH അല്ലെങ്കിൽ XMATCH ഫംഗ്ഷൻ ഉപയോഗിക്കും. ഒരു സെല്ലിൽ ഒരു നിർദ്ദിഷ്ട സ്ട്രിങ്ങിനായി തിരയുമ്പോൾ, FIND, SEARCH ഫംഗ്ഷനുകൾ ഉപയോഗപ്രദമാകും. തന്നിരിക്കുന്ന പാറ്റേണുമായി പൊരുത്തപ്പെടുന്ന വിവരങ്ങൾ ഒരു സെല്ലിൽ അടങ്ങിയിട്ടുണ്ടോ എന്ന് നിങ്ങൾക്ക് എങ്ങനെ അറിയാം? വ്യക്തമായും, പതിവ് പദപ്രയോഗങ്ങൾ ഉപയോഗിച്ച്. എന്നാൽ ഔട്ട് ഓഫ് ദി ബോക്സ് എക്സൽ റീജക്സുകളെ പിന്തുണയ്ക്കുന്നില്ല! വിഷമിക്കേണ്ട, ഞങ്ങൾ ഇത് നിർബന്ധിതമാക്കും :)
സ്ട്രിംഗുകൾ പൊരുത്തപ്പെടുത്തുന്നതിന് Excel VBA Regex ഫംഗ്ഷൻ
തലക്കെട്ടിൽ നിന്ന് വ്യക്തമായതിനാൽ, പതിവ് എക്സ്പ്രഷനുകൾ ഉപയോഗിക്കുന്നതിന് Excel-ൽ, നിങ്ങളുടേതായ പ്രവർത്തനം സൃഷ്ടിക്കേണ്ടതുണ്ട്. ഭാഗ്യവശാൽ, Excel-ന്റെ VBA-യിൽ ഒരു ഇൻബിൽറ്റ് RegExp ഒബ്ജക്റ്റ് ഉണ്ട്, അത് താഴെ കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങളുടെ കോഡിൽ ഉപയോഗിക്കാം:
പൊതു പ്രവർത്തനം RegExpMatch(input_range As Range, പാറ്റേൺ ആയി Boolean , Optional match_case As Boolean = True ) വേരിയന്റ് Dim arRes() വേരിയന്റ് അറേ ആയി ഫലങ്ങൾ സംഭരിക്കുന്നതിന് Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols സോഴ്സ് ശ്രേണിയിലെ നിലവിലെ നിരയുടെ ദൈർഘ്യമേറിയ 'സൂചിക, ഉറവിട ശ്രേണിയിലെ നിലവിലെ നിരയുടെ സൂചിക, വരികളുടെ എണ്ണം, എണ്ണം പിശകിലെ നിരകൾ GoTo ErrHandl RegExpMatch = arRes സെറ്റ് regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = പാറ്റേൺ regex.Global = True regex.MultiLine = True എങ്കിൽ True = match_case Ellese = Fignorecase പിന്നെ regex. അവസാനിക്കുന്നുഎക്സ്പ്രഷനുകൾ.പാറ്റേൺ : \b[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\- ]*[A-Za-z0-9]+\.[A-Za-z]{2,24}\b
ഇവിടെ എന്താണ് സംഭവിക്കുന്നതെന്ന് നന്നായി മനസ്സിലാക്കാൻ, നമുക്ക് ഓരോ ഭാഗവും സൂക്ഷ്മമായി പരിശോധിക്കാം :
- ഉപയോക്തൃനാമത്തിൽ അക്ഷരങ്ങൾ, അക്കങ്ങൾ, അടിവരകൾ, ഡോട്ടുകൾ, ഹൈഫനുകൾ എന്നിവ ഉൾപ്പെട്ടേക്കാം. \w ഏത് അക്ഷരവുമായോ അക്കവുമായോ അടിവരയിലേക്കോ പൊരുത്തപ്പെടുന്നു എന്നത് ഓർമ്മിക്കുമ്പോൾ, ഞങ്ങൾക്ക് ഇനിപ്പറയുന്ന റീജക്സ് ലഭിക്കും: [\w\.\-]+
- ഡൊമെയ്ൻ നാമം വലിയക്ഷരങ്ങളും ചെറിയക്ഷരങ്ങളും ഉൾപ്പെട്ടേക്കാം, അക്കങ്ങൾ, ഹൈഫനുകൾ (എന്നാൽ ആദ്യത്തേയോ അവസാനത്തെയോ സ്ഥാനത്തല്ല), ഡോട്ടുകൾ (സബ്ഡൊമെയ്നുകളുടെ കാര്യത്തിൽ). അടിവരകൾ അനുവദനീയമല്ലാത്തതിനാൽ, \w എന്നതിന് പകരം ഞങ്ങൾ 3 വ്യത്യസ്ത പ്രതീക സെറ്റുകൾ ഉപയോഗിക്കുന്നു: [A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9 ]+
- ടോപ്പ്-ലെവൽ ഡൊമെയ്ൻ എന്നതിൽ വലിയക്ഷരങ്ങളും ചെറിയക്ഷരങ്ങളും ചേർന്ന ഒരു ഡോട്ട് അടങ്ങിയിരിക്കുന്നു. ഇതിൽ 2 മുതൽ 24 വരെ അക്ഷരങ്ങൾ അടങ്ങിയിരിക്കാം (നിലവിൽ നിലവിലുള്ള ഏറ്റവും ദൈർഘ്യമേറിയ TLD): \.[A-Za-z]{2,24}
ശ്രദ്ധിക്കുക. ഡൊമെയ്ൻ നാമത്തിൽ രണ്ടോ അതിലധികമോ ആൽഫാന്യൂമെറിക് പ്രതീകങ്ങൾ അടങ്ങിയിട്ടുണ്ടെന്ന് പാറ്റേൺ അനുമാനിക്കുന്നു.
A5-ലെ ഒറിജിനൽ ടെക്സ്റ്റും A5-ലെ പാറ്റേണും ഉപയോഗിച്ച്, സൂത്രവാക്യം ഈ രൂപമെടുക്കുന്നു:
=RegExpMatch(A5, $A$2)
അല്ലെങ്കിൽ നിങ്ങൾക്ക് ലളിതമായ ഒരു പതിവ് ഉപയോഗിക്കാം. ഒരു ചെറിയക്ഷരമോ വലിയക്ഷരമോ ഉള്ള അക്ഷരക്കൂട്ടം ഉപയോഗിച്ച് ഇമെയിൽ മൂല്യനിർണ്ണയത്തിനുള്ള എക്സ്പ്രഷൻ:
പാറ്റേൺ : \b[\w\.\-]+@[a-z0-9]+[a- z0-9\.\-]*[a-z0-9]+\.[a-z]{2,24}\b
എന്നാൽ നിങ്ങളുടെ ഫോർമുല കേസ്-ഇൻസെൻസിറ്റീവ് ആക്കുക:
=RegExpMatch(A5, $A$2, FALSE)
എക്സൽ IF ഫോർമുല മാച്ച് റീജക്സിനൊപ്പം
ഇൻബിൽട്ടും ഇഷ്ടാനുസൃതവുമായ വസ്തുത കാരണംഫംഗ്ഷനുകൾ ഭംഗിയായി നടക്കുന്നു, ഒരൊറ്റ ഫോർമുലയിൽ അവ ഒരുമിച്ച് ഉപയോഗിക്കുന്നതിൽ നിന്ന് നിങ്ങളെ തടയുന്ന യാതൊന്നുമില്ല.
ഒരു സാധാരണ എക്സ്പ്രഷൻ പൊരുത്തപ്പെടുന്നുണ്ടെങ്കിൽ എന്തെങ്കിലും തിരികെ നൽകാനോ കണക്കാക്കാനോ, അത് പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ, ഇഷ്ടാനുസൃത RegExpMatch ഉൾപ്പെടുത്തുക IF എന്നതിന്റെ ലോജിക്കൽ ടെക്സ്റ്റിൽ ഫംഗ്ഷൻ:
IF(RegExpMatch(...), [value_if_true], [value_if_false])ഉദാഹരണത്തിന്, A5 ലെ ഒരു സ്ട്രിംഗിൽ സാധുവായ ഇമെയിൽ വിലാസമുണ്ടെങ്കിൽ, നിങ്ങൾക്ക് "അതെ" എന്ന് നൽകാം; അല്ലെങ്കിൽ "ഇല്ല".
=IF(RegExpMatch(A5, $A$2,), "Yes", "No")
regex പൊരുത്തപ്പെടുന്നെങ്കിൽ എണ്ണുക
കാരണം നേറ്റീവ് Excel ഫംഗ്ഷനുകൾ സാധാരണ എക്സ്പ്രഷനുകളെ പിന്തുണയ്ക്കുന്നില്ല, ഇത് COUNTIS അല്ലെങ്കിൽ COUNTIFS ഫംഗ്ഷനിൽ നേരിട്ട് ഒരു റീജക്സ് ഇടാൻ സാധ്യമല്ല. ഭാഗ്യവശാൽ, ഞങ്ങളുടെ ഇഷ്ടാനുസൃത ഫംഗ്ഷൻ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഈ പ്രവർത്തനം അനുകരിക്കാനാകും.
ഫോൺ നമ്പറുകൾ പൊരുത്തപ്പെടുത്തുന്നതിനും ബി കോളത്തിൽ ഫലങ്ങൾ ഔട്ട്പുട്ട് ചെയ്യുന്നതിനും നിങ്ങൾ ഒരു റീജക്സ് ഉപയോഗിച്ചിട്ടുണ്ടെന്ന് കരുതുക. എത്ര സെല്ലുകളിൽ ഫോൺ നമ്പറുകൾ ഉണ്ടെന്ന് കണ്ടെത്തുന്നതിന്, നിങ്ങൾക്ക് ഇത് ആവശ്യമാണ് B5:B9-ൽ TRUE മൂല്യങ്ങൾ കണക്കാക്കാൻ. സ്റ്റാൻഡേർഡ് COUNTIF ഫോർമുല ഉപയോഗിച്ച് അത് എളുപ്പത്തിൽ ചെയ്യാനാകും:
=COUNTIF(B5:B9, TRUE)
നിങ്ങളുടെ വർക്ക്ഷീറ്റിൽ അധിക കോളങ്ങളൊന്നും വേണ്ടേ? ഒരു പ്രശ്നവുമില്ല. ഞങ്ങളുടെ ഇഷ്ടാനുസൃത പ്രവർത്തനത്തിന് ഒരു സമയം ഒന്നിലധികം സെല്ലുകൾ പ്രോസസ്സ് ചെയ്യാനാകുമെന്നതും Excel-ന്റെ SUM-ന് ഒരു അറേയിൽ മൂല്യങ്ങൾ ചേർക്കാൻ കഴിയുമെന്നതും ഓർക്കുക, നിങ്ങൾ ചെയ്യുന്നത് ഇതാ:
- RegExpMatch-ലേക്ക് ഒരു റേഞ്ച് റഫറൻസ് നൽകുക, അങ്ങനെ അത് ഒരു റിട്ടേൺ നൽകുന്നു TRUE, FALSE മൂല്യങ്ങളുടെ നിര.
- ലോജിക്കൽ മൂല്യങ്ങളെ ഒന്നിലേക്ക് നിർബന്ധിക്കാൻ ഇരട്ട നിഷേധം (--) ഉപയോഗിക്കുകപൂജ്യങ്ങൾ.
- ഫലമായുണ്ടാകുന്ന അറേയിൽ 1 ഉം 0 ഉം ചേർക്കാൻ SUM ഫംഗ്ഷൻ നേടുക.
=SUM(--RegExpMatch(A5:A9, $A$2))
Regex പൊരുത്തം അൾട്ടിമേറ്റ് സ്യൂട്ടിനൊപ്പം
ഞങ്ങളുടെ അൾട്ടിമേറ്റ് സ്യൂട്ടിന്റെ ഉപയോക്താക്കൾക്ക് അവരുടെ വർക്ക്ബുക്കുകളിൽ VBA കോഡ് ചേർക്കാതെ തന്നെ നാല് ശക്തമായ Regex ഫംഗ്ഷനുകൾ പ്രയോജനപ്പെടുത്താൻ കഴിയും, കാരണം ആഡ്-ഇൻ ഇൻസ്റ്റാളേഷൻ സമയത്ത് Excel-ലേക്ക് സുഗമമായി സംയോജിപ്പിക്കപ്പെടുന്നു. ഞങ്ങളുടെ ഇഷ്ടാനുസൃത ഫംഗ്ഷനുകൾ പ്രോസസ്സ് ചെയ്യുന്നത് സ്റ്റാൻഡേർഡ് .NET RegEx എഞ്ചിൻ ഉപയോഗിച്ചാണ് കൂടാതെ പൂർണ്ണ ഫീച്ചർ ചെയ്ത ക്ലാസിക് റെഗുലർ എക്സ്പ്രഷനുകളെ പിന്തുണയ്ക്കുന്നു.
ഇഷ്ടാനുസൃത RegexMatch ഫംഗ്ഷൻ എങ്ങനെ ഉപയോഗിക്കാം
നിങ്ങൾക്ക് അൾട്ടിമേറ്റ് സ്യൂട്ടിന്റെ ഏറ്റവും പുതിയ പതിപ്പ് ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെന്ന് അനുമാനിക്കുക ( 2021.4 അല്ലെങ്കിൽ അതിനുശേഷമുള്ളത്), നിങ്ങൾക്ക് രണ്ട് ലളിതമായ ഘട്ടങ്ങളിലൂടെ ഒരു Regex Match ഫോർമുല സൃഷ്ടിക്കാൻ കഴിയും:
- Ablebits Data ടാബിൽ, Text ഗ്രൂപ്പിൽ, ക്ലിക്ക് ചെയ്യുക Regex ടൂളുകൾ .
- തിരഞ്ഞെടുക്കുക ഉറവിട സ്ട്രിംഗുകൾ.
- നിങ്ങളുടെ പാറ്റേൺ നൽകുക.
- Match ഓപ്ഷൻ തിരഞ്ഞെടുക്കുക.
- ഫലങ്ങൾ മൂല്യങ്ങളല്ല, ഫോർമുലകളായി ലഭിക്കാൻ, <തിരഞ്ഞെടുക്കുക 8>ഒരു ഫോർമുലയായി തിരുകുക ചെക്ക് ബോക്സ്.
- പൊരുത്തം ബട്ടണിൽ ക്ലിക്ക് ചെയ്യുക.
ഒരു നിമിഷത്തിനുശേഷം, നിങ്ങളുടെ ഡാറ്റയുടെ വലതുവശത്തുള്ള ഒരു പുതിയ കോളത്തിൽ AblebitsRegexMatch ഫംഗ്ഷൻ ചേർത്തിരിക്കുന്നു.
ചുവടെയുള്ള സ്ക്രീൻഷോട്ടിൽ, A കോളത്തിലെ സ്ട്രിംഗുകളിൽ 7-അക്കങ്ങൾ അടങ്ങിയിട്ടുണ്ടോ എന്ന് ഫംഗ്ഷൻ പരിശോധിക്കുന്നു. അക്കങ്ങളോ ഇല്ലയോ.
നുറുങ്ങുകൾ:
- ഫൺക് tion നേരിട്ട് ഒരു സെല്ലിൽ ചേർക്കാംസ്റ്റാൻഡേർഡ് Insert Function ഡയലോഗ് ബോക്സ് വഴി, അത് AblebitsUDFs എന്നതിന് കീഴിൽ വർഗ്ഗീകരിച്ചിരിക്കുന്നു.
- സ്ഥിരമായി, ഫോർമുലയിലേക്ക് ഒരു സാധാരണ എക്സ്പ്രഷൻ ചേർത്തിട്ടുണ്ട്, എന്നാൽ നിങ്ങൾക്ക് അത് നിലനിർത്താനും കഴിയും. അത് ഒരു പ്രത്യേക സെല്ലിൽ. ഇതിനായി, രണ്ടാമത്തെ ആർഗ്യുമെന്റിനായി ഒരു സെൽ റഫറൻസ് ഉപയോഗിക്കുക.
- ഡിഫോൾട്ടായി, ഫംഗ്ഷൻ കേസ് സെൻസിറ്റീവ് ആണ്. കേസ്-ഇൻസെൻസിറ്റീവ് പൊരുത്തപ്പെടുത്തലിനായി, (?i) പാറ്റേൺ ഉപയോഗിക്കുക.
കൂടുതൽ വിവരങ്ങൾക്ക്, ദയവായി AblebitsRegexMatch ഫംഗ്ഷൻ കാണുക.
Excel-ൽ പതിവ് എക്സ്പ്രഷൻ മാച്ച് ചെയ്യുന്നത് ഇങ്ങനെയാണ്. വായിച്ചതിന് നന്ദി, അടുത്ത ആഴ്ച ഞങ്ങളുടെ ബ്ലോഗിൽ നിങ്ങളെ കാണാൻ കാത്തിരിക്കുന്നു!
ലഭ്യമായ ഡൗൺലോഡുകൾ
Excel Regex Match ഉദാഹരണങ്ങൾ (.xlsm ഫയൽ)
Ultimate Suite 14- ദിവസം പൂർണ്ണമായി പ്രവർത്തനക്ഷമമായ പതിപ്പ് (.exe ഫയൽ)
cntInputRows = input_range.Rows.Count cntInputCols = input_range.Columns. Count ReDim arRes(1 to cntInputRows, 1 to cntInputCols) iInputCurRow = 1 to cntInputRows for iInputCurRows = 1 to cntInputRows for iInputCurCol. .Cells(iInputCurRow, iInputCurCol).മൂല്യം) അടുത്തത് RegExpMatch = arRes എക്സിറ്റ് ഫംഗ്ഷൻ ErrHandl: RegExpMatch = CVErr(xlErrValue) എൻഡ് ഫംഗ്ഷൻകോഡ് VBA എഡിറ്ററിൽ ഒട്ടിക്കുക, നിങ്ങളുടെ പുതിയ Reg ആണ് <2ExpatchM ഉപയോഗത്തിന് തയ്യാറാണ്. നിങ്ങൾക്ക് VBA-യിൽ പരിചയമില്ലെങ്കിൽ, ഈ ഗൈഡ് സഹായകമായേക്കാം: Excel-ൽ VBA കോഡ് എങ്ങനെ ചേർക്കാം.
ശ്രദ്ധിക്കുക. കോഡ് ചേർത്ത ശേഷം, നിങ്ങളുടെ ഫയൽ ഒരു മാക്രോ പ്രവർത്തനക്ഷമമാക്കിയ വർക്ക്ബുക്ക് (.xlsm) ആയി സേവ് ചെയ്യാൻ ഓർക്കുക.
RegExpMatch വാക്യഘടന
RegExpMatch ഫംഗ്ഷൻ ഉറവിട സ്ട്രിംഗിന്റെ ഏതെങ്കിലും ഭാഗം ഒരു സാധാരണ എക്സ്പ്രഷനുമായി പൊരുത്തപ്പെടുന്നുണ്ടോയെന്ന് പരിശോധിക്കുന്നു. ഫലം ഒരു ബൂളിയൻ മൂല്യമാണ്: കുറഞ്ഞത് ഒരു പൊരുത്തം കണ്ടെത്തിയാൽ ശരി, അല്ലെങ്കിൽ തെറ്റ് , പാറ്റേൺ, [match_case])
എവിടെ:
- ടെക്സ്റ്റ് (ആവശ്യമാണ്) - തിരയാൻ ഒന്നോ അതിലധികമോ സ്ട്രിംഗുകൾ. ഒരു സെൽ അല്ലെങ്കിൽ റേഞ്ച് റഫറൻസ് ആയി നൽകാം.
- പാറ്റേൺ (ആവശ്യമാണ്) - പൊരുത്തപ്പെടാനുള്ള പതിവ് എക്സ്പ്രഷൻ. ഒരു ഫോർമുലയിൽ നേരിട്ട് സ്ഥാപിക്കുമ്പോൾ, ഒരു പാറ്റേൺ ഇരട്ട ഉദ്ധരണികളിൽ ഉൾപ്പെടുത്തിയിരിക്കണം.
- Match_case (ഓപ്ഷണൽ) - പൊരുത്തം നിർവചിക്കുന്നുതരം. ശരിയോ ഒഴിവാക്കിയതോ ആണെങ്കിൽ (ഡിഫോൾട്ട്), കേസ്-സെൻസിറ്റീവ് പൊരുത്തപ്പെടുത്തൽ നടത്തുന്നു; FALSE - case-insensitive ആണെങ്കിൽ.
Excel 365, Excel 2021, Excel 2019, Excel 2016, Excel 2013, Excel 2010 എന്നിവയുടെ എല്ലാ പതിപ്പുകളിലും ഫംഗ്ഷൻ പ്രവർത്തിക്കുന്നു.
നിങ്ങളുടെ 3 കാര്യങ്ങൾ RegExpMatch-നെ കുറിച്ച് അറിഞ്ഞിരിക്കണം
ഞങ്ങൾ പ്രായോഗിക കണക്കുകൂട്ടലുകളിലേക്ക് എത്തുന്നതിന് മുമ്പ്, ചില സാങ്കേതിക കാര്യങ്ങൾ വ്യക്തമാക്കുന്ന ഇനിപ്പറയുന്ന പോയിന്റുകൾ ശ്രദ്ധിക്കുക:
- ഫംഗ്ഷന് സിംഗിൾ സെൽ<9 പ്രോസസ്സ് ചെയ്യാൻ കഴിയും> അല്ലെങ്കിൽ സെല്ലുകളുടെ ശ്രേണി . പിന്നീടുള്ള സന്ദർഭത്തിൽ, ഈ ഉദാഹരണത്തിൽ കാണിച്ചിരിക്കുന്നതുപോലെ ഒരു ഡൈനാമിക് അറേ അല്ലെങ്കിൽ സ്പിൽ ശ്രേണിയുടെ രൂപത്തിൽ അയൽ സെല്ലുകളിൽ ഫലങ്ങൾ നൽകുന്നു.
- ഡിഫോൾട്ടായി, ഫംഗ്ഷൻ കേസ് സെൻസിറ്റീവ് . ടെക്സ്റ്റ് കേസ് അവഗണിക്കാൻ, match_case ആർഗ്യുമെന്റ് FALSE ആയി സജ്ജമാക്കുക. VBA Regexp പരിമിതികൾ കാരണം, കേസ്-ഇൻസെൻസിറ്റീവ് പാറ്റേൺ (?i) പിന്തുണയ്ക്കുന്നില്ല.
- സാധുവായ ഒരു പാറ്റേൺ കണ്ടെത്തിയില്ലെങ്കിൽ, ഫംഗ്ഷൻ FALSE നൽകുന്നു; പാറ്റേൺ അസാധുവാണെങ്കിൽ , ഒരു #VALUE! പിശക് സംഭവിക്കുന്നു.
ചുവടെ, പ്രദർശന ആവശ്യങ്ങൾക്കായി സൃഷ്ടിച്ച കുറച്ച് regex മാച്ച് ഉദാഹരണങ്ങൾ നിങ്ങൾ കണ്ടെത്തും. നിങ്ങളുടെ യഥാർത്ഥ വർക്ക്ഷീറ്റുകളിലെ ഇൻപുട്ട് ഡാറ്റയുടെ വിശാലമായ ശ്രേണിയിൽ ഞങ്ങളുടെ പാറ്റേണുകൾ കുറ്റമറ്റ രീതിയിൽ പ്രവർത്തിക്കുമെന്ന് ഞങ്ങൾക്ക് ഉറപ്പുനൽകാൻ കഴിയില്ല. ഉൽപ്പാദനം ആരംഭിക്കുന്നതിന് മുമ്പ്, നിങ്ങളുടെ ആവശ്യങ്ങൾക്കനുസരിച്ച് ഞങ്ങളുടെ സാമ്പിളുകളുടെ പാറ്റേണുകൾ പരിശോധിച്ച് ക്രമീകരിക്കുന്നത് ഉറപ്പാക്കുക.
എക്സെൽ-ലെ സ്ട്രിംഗുകൾ പൊരുത്തപ്പെടുത്തുന്നതിന് റീജക്സ് എങ്ങനെ ഉപയോഗിക്കാം
നിങ്ങൾ പൊരുത്തപ്പെടുത്താൻ ആഗ്രഹിക്കുന്ന എല്ലാ സ്ട്രിംഗുകളും ഉള്ളപ്പോൾ ഒരേ മാതൃക,റെഗുലർ എക്സ്പ്രഷനുകൾ ഒരു ഉത്തമ പരിഹാരമാണ്.
നിങ്ങൾക്ക് ചില ഇനങ്ങളെക്കുറിച്ചുള്ള വിവിധ വിശദാംശങ്ങൾ അടങ്ങിയ സെല്ലുകളുടെ ഒരു ശ്രേണി (A5:A9) ഉണ്ടെന്ന് കരുതുക. ഏതൊക്കെ സെല്ലുകളാണ് SKU-കൾ ഉള്ളതെന്ന് അറിയാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നു. ഓരോ SKU-യിലും 2 വലിയ അക്ഷരങ്ങൾ, ഒരു ഹൈഫൻ, 3 അക്കങ്ങൾ എന്നിവ അടങ്ങിയിരിക്കുന്നുവെന്ന് കരുതുക, ഇനിപ്പറയുന്ന എക്സ്പ്രഷൻ ഉപയോഗിച്ച് നിങ്ങൾക്ക് അവ പൊരുത്തപ്പെടുത്താനാകും.
പാറ്റേൺ : \b[A-Z]{2}-\ d{3}\b
ഇവിടെ [A-Z]{2} എന്നാൽ A മുതൽ Z വരെയുള്ള ഏതെങ്കിലും 2 വലിയ അക്ഷരങ്ങളും \d{3} എന്നാൽ 0 മുതൽ 9 വരെയുള്ള ഏതെങ്കിലും 3 അക്കങ്ങളും അർത്ഥമാക്കുന്നു. \b പ്രതീകം ഒരു വാക്കിനെ സൂചിപ്പിക്കുന്നു അതിർത്തി, അതായത് SKU എന്നത് ഒരു പ്രത്യേക പദമാണ്, 23-MAR-2022 പോലെയുള്ള ഒരു വലിയ സ്ട്രിംഗിന്റെ ഭാഗമല്ല.
പാറ്റേൺ സ്ഥാപിച്ച്, നമുക്ക് ഒരു ഫോർമുല എഴുതുന്നതിലേക്ക് പോകാം. അടിസ്ഥാനപരമായി, ഒരു ഇഷ്ടാനുസൃത ഫംഗ്ഷൻ ഉപയോഗിക്കുന്നത് നേറ്റീവ് ഒന്നിൽ നിന്ന് വ്യത്യസ്തമല്ല. നിങ്ങൾ ഒരു ഫോർമുല ടൈപ്പ് ചെയ്യാൻ തുടങ്ങുമ്പോൾ തന്നെ, Excel-ന്റെ ഓട്ടോകംപ്ലീറ്റ് നിർദ്ദേശിച്ച ലിസ്റ്റിൽ ഫംഗ്ഷന്റെ പേര് ദൃശ്യമാകും. എന്നിരുന്നാലും, Dynamic Array Excel (Microsoft 365, Excel 2021), പരമ്പരാഗത Excel (2019-ഉം പഴയ പതിപ്പുകളും) എന്നിവയിൽ രണ്ട് സൂക്ഷ്മതകളുണ്ട്.
ഒരു സെല്ലിൽ സ്ട്രിംഗ് പൊരുത്തപ്പെടുത്തുക
ഒരു സ്ട്രിംഗ് പൊരുത്തപ്പെടുത്താൻ ഒരൊറ്റ സെല്ലിൽ, ആദ്യത്തെ ആർഗ്യുമെന്റിൽ ആ സെല്ലിനെ പരാമർശിക്കുക. രണ്ടാമത്തെ ആർഗ്യുമെന്റിൽ ഒരു റെഗുലർ എക്സ്പ്രഷൻ ഉണ്ടായിരിക്കണം.
=RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")
പാറ്റേൺ ഒരു സമ്പൂർണ്ണ റഫറൻസ് ($A$2) ഉപയോഗിച്ച് ലോക്ക് ചെയ്തിരിക്കുന്ന ഒരു മുൻകൂട്ടി നിശ്ചയിച്ച സെല്ലിലും സൂക്ഷിക്കാം:
=RegExpMatch(A5, $A$2)
ആദ്യ സെല്ലിൽ ഫോർമുല നൽകിയ ശേഷം, നിങ്ങൾക്ക് അത് മറ്റെല്ലാ വരികളിലേക്കും വലിച്ചിടാം.
ഈ രീതി എല്ലാ Excel പതിപ്പുകളിലും മനോഹരമായി പ്രവർത്തിക്കുന്നു.
ഒന്നിലധികം സെല്ലുകളിലെ സ്ട്രിംഗുകൾ ഒരേസമയം പൊരുത്തപ്പെടുത്തുക
ഒരൊറ്റ ഫോർമുല ഉപയോഗിച്ച് ഒന്നിലധികം സ്ട്രിംഗുകൾ പൊരുത്തപ്പെടുത്തുന്നതിന്, ആദ്യ ആർഗ്യുമെന്റിൽ ഒരു റേഞ്ച് റഫറൻസ് ഉൾപ്പെടുത്തുക:
=RegExpMatch(A5:A9, "\b[A-Z]{2}-\d{3}\b")
Excel 365 , Excel 2021 എന്നിവയിൽ ഡൈനാമിക് അറേകളെ പിന്തുണയ്ക്കുന്നു, ഇത് ഈ രീതിയിൽ പ്രവർത്തിക്കുന്നു - നിങ്ങൾ ആദ്യ സെല്ലിൽ ഫോർമുല ടൈപ്പ് ചെയ്യുക, എന്റർ അമർത്തുക, ഫോർമുല സ്വയമേവ താഴെയുള്ള സെല്ലുകളിലേക്ക് ഒഴുകും.
Excel 2019 -ലും അതിനുമുമ്പും, അത് ഒരു പരമ്പരാഗത CSE അറേ ഫോർമുലയായി മാത്രമേ പ്രവർത്തിക്കൂ, അത് സെല്ലുകളുടെ ഒരു ശ്രേണിയിൽ നൽകുകയും Ctrl + Shift + Enter കീകൾ ഒരുമിച്ച് അമർത്തി പൂർത്തിയാക്കുകയും ചെയ്യുന്നു.
നമ്പർ പൊരുത്തപ്പെടുത്തുന്നതിന് Regex
0 മുതൽ 9 വരെയുള്ള ഏതെങ്കിലും ഒറ്റ അക്കവുമായി പൊരുത്തപ്പെടുന്നതിന്, റീജക്സിലെ \d പ്രതീകം ഉപയോഗിക്കുക. നിങ്ങളുടെ പ്രത്യേക ടാസ്ക്കിനെ ആശ്രയിച്ച്, അനുയോജ്യമായ ഒരു ക്വാണ്ടിഫയർ ചേർക്കുക അല്ലെങ്കിൽ കൂടുതൽ സങ്കീർണ്ണമായ പാറ്റേൺ സൃഷ്ടിക്കുക.
ഏത് സംഖ്യയുമായും പൊരുത്തപ്പെടുന്നതിന് Regex
ഏത് ദൈർഘ്യമുള്ള ഏത് സംഖ്യയും പൊരുത്തപ്പെടുത്തുന്നതിന്, / എന്നതിന് തൊട്ടുപിന്നാലെ + ക്വാണ്ടിഫയർ ഇടുക. d പ്രതീകം, ഒന്നോ അതിലധികമോ അക്കങ്ങൾ അടങ്ങിയ സംഖ്യകൾക്കായി തിരയാൻ പറയുന്നു.
പാറ്റേൺ : \d+
=RegExpMatch(A5:A9, "\d+")
നിർദ്ദിഷ്ട ദൈർഘ്യത്തിന്റെ സംഖ്യയുമായി പൊരുത്തപ്പെടുന്നതിന് Regex
നിങ്ങളുടെ ലക്ഷ്യം നിശ്ചിത എണ്ണം അക്കങ്ങൾ അടങ്ങിയ സംഖ്യാ മൂല്യങ്ങളുമായി പൊരുത്തപ്പെടുന്നതാണെങ്കിൽ, ഉചിതമായ ക്വാണ്ടിഫയർ ഉപയോഗിച്ച് \d ഒരുമിച്ച് ഉപയോഗിക്കുക.
ഉദാഹരണത്തിന്, കൃത്യമായി 7 അക്കങ്ങൾ അടങ്ങുന്ന ഇൻവോയ്സ് നമ്പറുകൾ പൊരുത്തപ്പെടുത്താൻ, നിങ്ങൾ \d{7} ഉപയോഗിക്കും. എന്നിരുന്നാലും, ഇത് 7 മായി പൊരുത്തപ്പെടുമെന്ന് ദയവായി ഓർക്കുകപ്രതീക്ഷിച്ചതുപോലെ:
കുറിപ്പുകൾ:
- അന്താരാഷ്ട്ര കോഡുകൾ പരിശോധിച്ചിട്ടില്ല, അതിനാൽ അവ നിലവിലില്ലായിരിക്കാം.
- പതിവ് എക്സ്പ്രഷനുകളിൽ, സ്പെയ്സ്, ടാബ്, ക്യാരേജ് റിട്ടേൺ അല്ലെങ്കിൽ പുതിയ ലൈൻ പോലുള്ള ഏത് വൈറ്റ്സ്പെയ്സ് പ്രതീകത്തെയും സൂചിപ്പിക്കുന്നു. സ്പെയ്സുകൾ മാത്രം അനുവദിക്കുന്നതിന്, [-\ ഉപയോഗിക്കുക. ] പകരം [-\.\s].
- [^13] 1 അല്ലെങ്കിൽ 3 അല്ലാത്ത ഏതെങ്കിലും ഒരു പ്രതീകവുമായി പൊരുത്തപ്പെടും.
- [^1-3] 1 അല്ലാത്ത ഏതെങ്കിലും ഒരു പ്രതീകവുമായി പൊരുത്തപ്പെടും, 2 അല്ലെങ്കിൽ 3 (അതായത് 1 മുതൽ 3 വരെയുള്ള ഏതെങ്കിലും അക്കം).
- മുകളിലുള്ള റീജക്സ് സിംഗിൾ-ലൈൻ സ്ട്രിംഗുകൾക്ക് മാത്രമേ പ്രവർത്തിക്കൂ. മിൽറ്റി-ലൈൻ സ്ട്രിംഗുകളുടെ കാര്യത്തിൽ, ഇൻപുട്ട് സ്ട്രിംഗിന്റെ തുടക്കത്തിനും അവസാനത്തിനും പകരം ^, $ പ്രതീകങ്ങൾ ഓരോ വരിയുടെയും തുടക്കവും അവസാനവുമായി പൊരുത്തപ്പെടുന്നു, അതിനാൽ റീജക്സ് ആദ്യ വരിയിൽ മാത്രമേ തിരയൂ.
- നിശ്ചിത ടെക്സ്റ്റിനൊപ്പം ആരംഭിക്കാത്ത സ്ട്രിംഗുകൾ പൊരുത്തപ്പെടുത്താൻ , ^(?!lemons).*$
- അവസാനിക്കാത്ത നിശ്ചിത ടെക്സ്റ്റിനൊപ്പം സ്ട്രിംഗുകൾ പൊരുത്തപ്പെടുത്താൻ, ഉൾപ്പെടുത്തുകതിരയൽ പാറ്റേണിലേക്ക് എൻഡ് സ്ട്രിംഗ് ആങ്കർ: ^((?!lemons$).)*$
Regex to NOT match character
ഒരു നിശ്ചിത പ്രതീകം ഉൾക്കൊള്ളാത്ത സ്ട്രിംഗുകൾ കണ്ടെത്താൻ, നിങ്ങൾക്ക് പൊരുത്തപ്പെടുന്ന നിരാകരിച്ച പ്രതീക ക്ലാസുകൾ [^ ] ഉപയോഗിക്കാം ബ്രാക്കറ്റിൽ ഇല്ലാത്ത ഒന്നും. ഉദാഹരണത്തിന്:
ഫോൺ നമ്പറുകളുടെ ഒരു ലിസ്റ്റിൽ, രാജ്യ കോഡ് ഇല്ലാത്തവ കണ്ടെത്തണമെന്ന് കരുതുക. ഏതൊരു അന്താരാഷ്ട്ര കോഡിലും + ചിഹ്നം ഉൾപ്പെട്ടിട്ടുണ്ടെന്ന് മനസ്സിൽ വെച്ചുകൊണ്ട്, പ്ലസ് ചിഹ്നം അടങ്ങാത്ത സ്ട്രിംഗുകൾ കണ്ടെത്താൻ നിങ്ങൾക്ക് [^\+] പ്രതീക ക്ലാസ് ഉപയോഗിക്കാം. മുകളിലുള്ള പദപ്രയോഗം + അല്ലാത്ത ഏതെങ്കിലും ഒരു പ്രതീകവുമായി പൊരുത്തപ്പെടുന്നുവെന്ന് മനസ്സിലാക്കേണ്ടത് പ്രധാനമാണ്. ഒരു ഫോൺ നമ്പർ ഒരു സ്ട്രിംഗിൽ എവിടെയും ആയിരിക്കാമെന്നതിനാൽ, തുടക്കത്തിൽ തന്നെ ആവശ്യമില്ല, തുടർന്നുള്ള ഓരോ പ്രതീകവും പരിശോധിക്കാൻ * ക്വാണ്ടിഫയർ ചേർക്കുന്നു. സ്റ്റാർട്ട് ^, എൻഡ് $ ആങ്കറുകൾ മുഴുവൻ സ്ട്രിംഗും പ്രോസസ്സ് ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുന്നു. ഫലമായി, "സ്ട്രിംഗിലെ ഒരു സ്ഥാനത്തും + പ്രതീകവുമായി പൊരുത്തപ്പെടരുത്" എന്ന് പറയുന്ന താഴെയുള്ള റെഗുലർ എക്സ്പ്രഷൻ നമുക്ക് ലഭിക്കും.
പാറ്റേൺ :^[^\+]*$
=RegExpMatch(A5, "^[^\+]*$")
Regex to NOT string
പ്രത്യേക റെഗുലർ എക്സ്പ്രഷൻ വാക്യഘടന ഇല്ലെങ്കിലും ഒരു നിർദ്ദിഷ്ട സ്ട്രിംഗുമായി പൊരുത്തപ്പെടുന്നില്ല, നെഗറ്റീവ് ലുക്ക്ഹെഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഈ സ്വഭാവം അനുകരിക്കാം.
"ലെമൺസ്" എന്ന വാക്ക് അടങ്ങാത്ത സ്ട്രിംഗുകൾ കണ്ടെത്താൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെന്ന് കരുതുക. ഈ പതിവ് പദപ്രയോഗം മികച്ച രീതിയിൽ പ്രവർത്തിക്കും:
പാറ്റേൺ : ^((?! നാരങ്ങ).)*$
വ്യക്തമായും, ഇവിടെ ചില വിശദീകരണങ്ങൾ ആവശ്യമാണ്. നെഗറ്റീവായ ലുക്ക്ഹെഡ് (?!lemons) മുന്നിൽ "നാരങ്ങ" എന്ന വാക്ക് ഇല്ലേ എന്നറിയാൻ വലതുവശത്തേക്ക് നോക്കുന്നു. "നാരങ്ങകൾ" ഇല്ലെങ്കിൽ, ഒരു ലൈൻ ബ്രേക്ക് ഒഴികെയുള്ള ഏത് പ്രതീകത്തിലും ഡോട്ട് പൊരുത്തപ്പെടുന്നു. മുകളിലെ എക്സ്പ്രഷൻ ഒരു പരിശോധന മാത്രം ചെയ്യുന്നു, കൂടാതെ * ക്വാണ്ടിഫയർ അത് പൂജ്യമോ അതിലധികമോ തവണ ആവർത്തിക്കുന്നു, ^ ആങ്കർ ചെയ്തിരിക്കുന്ന സ്ട്രിംഗിന്റെ തുടക്കം മുതൽ $ ആങ്കർ ചെയ്ത സ്ട്രിംഗിന്റെ അവസാനം വരെ.
ടെക്സ്റ്റ് കേസ് അവഗണിക്കാൻ, ഞങ്ങളുടെ ഫംഗ്ഷൻ കേസ്-ഇൻസെൻസിറ്റീവ് ആക്കുന്നതിന് ഞങ്ങൾ 3-ാമത്തെ ആർഗ്യുമെന്റ് FALSE ആയി സജ്ജീകരിച്ചു:
=RegExpMatch(A5, $A$2, FALSE)
നുറുങ്ങുകളും കുറിപ്പുകളും:
കേസ് സെൻസിറ്റീവ് മാച്ചിംഗ്
ക്ലാസിക് റെഗുലർ എക്സ്പ്രഷനുകളിൽ, ഇതിനായി ഒരു പ്രത്യേക പാറ്റേൺ ഉണ്ട് കേസ്-ഇൻസെൻസിറ്റീവ് മാച്ചിംഗ് (?i), ഇത് VBA RegExp-ൽ പിന്തുണയ്ക്കുന്നില്ല. ഈ പരിമിതി മറികടക്കാൻ, ഞങ്ങളുടെ ഇഷ്ടാനുസൃത ഫംഗ്ഷൻ match_case എന്ന പേരുള്ള മൂന്നാമത്തെ ഓപ്ഷണൽ ആർഗ്യുമെന്റ് അംഗീകരിക്കുന്നു. കേസ്-ഇൻസെൻസിറ്റീവ് പൊരുത്തപ്പെടുത്തൽ നടത്താൻ, അത് FALSE എന്ന് സജ്ജീകരിക്കുക.
1-MAR-22 അല്ലെങ്കിൽ 01-MAR-2022 പോലുള്ള തീയതികൾ തിരിച്ചറിയാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെന്ന് നമുക്ക് പറയാം. dd-mmm-yyyy , d-mmm-yy എന്നീ ഫോർമാറ്റുകളുമായി പൊരുത്തപ്പെടുന്നതിന്, ഞങ്ങൾ ഇനിപ്പറയുന്ന പതിവ് എക്സ്പ്രഷൻ ഉപയോഗിക്കുന്നു.
പാറ്റേൺ : \b\d{1,2}-(ജന10-അക്ക അല്ലെങ്കിൽ 100-അക്ക നമ്പർ ഉൾപ്പെടെ സ്ട്രിംഗിലെവിടെയും അക്കങ്ങൾ. നിങ്ങൾ അന്വേഷിക്കുന്നത് ഇതല്ലെങ്കിൽ, അതിർത്തി \b എന്ന വാക്ക് ഇരുവശത്തും ഇടുക.
പാറ്റേൺ : \b\d{7}\b
=RegExpMatch(A5:A9, "\b\d{7}\b")
ഫോൺ നമ്പറുകളുമായി പൊരുത്തപ്പെടുത്തുന്നതിന് റെജക്സ്
ഫോൺ നമ്പറുകൾ വിവിധ ഫോർമാറ്റുകളിൽ എഴുതാൻ കഴിയുമെന്നതിനാൽ, അവയുമായി പൊരുത്തപ്പെടുന്നതിന് കൂടുതൽ സങ്കീർണ്ണമായ പതിവ് ആവിഷ്കാരം ആവശ്യമാണ്.
താഴെയുള്ള ഡാറ്റാസെറ്റിൽ, ആദ്യത്തെ 2 ഗ്രൂപ്പുകളിൽ 3 അക്കങ്ങളും അവസാന ഗ്രൂപ്പിൽ 4 അക്കങ്ങളും ഉള്ള 10 അക്ക നമ്പറുകൾക്കായി ഞങ്ങൾ തിരയുന്നു. ഗ്രൂപ്പുകളെ ഒരു പിരീഡ്, ഹൈഫൻ അല്ലെങ്കിൽ സ്പേസ് ഉപയോഗിച്ച് വേർതിരിക്കാം. ആദ്യത്തെ ഗ്രൂപ്പ് പരാൻതീസിസിൽ ഉൾപ്പെടുത്തിയിരിക്കാം അല്ലെങ്കിൽ ഉൾപ്പെടുത്താതിരിക്കാം.
പാറ്റേൺ: (\(\d{3}\)