តារាងមាតិកា
នៅក្នុងមេរៀននេះ យើងនឹងពិនិត្យមើលស៊ីជម្រៅអំពីរបៀបប្រើ regex ដើម្បីផ្គូផ្គងខ្សែអក្សរក្នុង Excel។
នៅពេលដែលអ្នកត្រូវការស្វែងរកតម្លៃជាក់លាក់ក្នុងជួរមួយ។ នៃក្រឡា អ្នកនឹងប្រើមុខងារ MATCH ឬ XMATCH ។ នៅពេលស្វែងរកខ្សែអក្សរជាក់លាក់មួយនៅក្នុងក្រឡា មុខងារ FIND និង SEARCH មានប្រយោជន៍។ ហើយតើអ្នកដឹងថាតើក្រឡាមួយមានព័ត៌មានដែលត្រូវនឹងលំនាំដែលបានផ្តល់ឱ្យដោយរបៀបណា? ជាក់ស្តែងដោយប្រើកន្សោមធម្មតា។ ប៉ុន្តែចេញពីប្រអប់ Excel មិនគាំទ្រ regexes ទេ! កុំបារម្ភ យើងនឹងបង្ខំវាឱ្យ :)
មុខងារ Excel VBA Regex ដើម្បីផ្គូផ្គងខ្សែអក្សរ
ព្រោះវាច្បាស់ណាស់ពីក្បាល ដើម្បីប្រើកន្សោមធម្មតា នៅក្នុង Excel អ្នកត្រូវបង្កើតមុខងារផ្ទាល់ខ្លួនរបស់អ្នក។ ជាសំណាងល្អ VBA របស់ Excel មានវត្ថុ RegExp inbuilt ដែលអ្នកអាចប្រើក្នុងកូដរបស់អ្នកដូចបានបង្ហាញខាងក្រោម៖
មុខងារសាធារណៈ RegExpMatch(input_range As Range, pattern As String, Optional match_case As Boolean = True) As វ៉ារ្យង់ Dim arRes() ជាអារេវ៉ារ្យង់ដើម្បីរក្សាទុកលទ្ធផល Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long 'សន្ទស្សន៍នៃជួរបច្ចុប្បន្នក្នុងជួរប្រភព លិបិក្រមនៃជួរឈរបច្ចុប្បន្ននៅក្នុងជួរប្រភព ចំនួនជួរដេក ចំនួននៃ columns On Error GoTo ErrHandl RegExpMatch = arRes Set regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = pattern regex.Global = True regex.MultiLine = True If True = match_case បន្ទាប់មក regex.ignorecase = False Else regex. ចប់កន្សោម។លំនាំ : \b[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\- ]*[A-Za-z0-9]+\.[A-Za-z]{2,24}\b
ដើម្បីយល់កាន់តែច្បាស់អំពីអ្វីដែលកំពុងកើតឡើងនៅទីនេះ សូមពិនិត្យមើលឱ្យកាន់តែច្បាស់នៅផ្នែកនីមួយៗ :
- ឈ្មោះអ្នកប្រើប្រាស់ អាចរួមបញ្ចូលអក្សរ លេខ សញ្ញាចុច ចំណុច និងសហសញ្ញា។ ដោយចងចាំថា \w ផ្គូផ្គងអក្សរណាមួយ ខ្ទង់ ឬសញ្ញាគូស យើងទទួលបាន regex ខាងក្រោម៖ [\w\.\-]+
- ឈ្មោះដែន អាចរួមបញ្ចូលអក្សរធំ និងអក្សរតូច។ ខ្ទង់ សហសញ្ញា (ប៉ុន្តែមិននៅក្នុងទីតាំងដំបូង ឬចុងក្រោយ) និងចំណុច (ក្នុងករណីដែនរង)។ ដោយសារសញ្ញាគូសមិនត្រូវបានអនុញ្ញាត ជំនួសឱ្យ \w យើងកំពុងប្រើសំណុំតួអក្សរ 3 ផ្សេងគ្នា៖ [A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9 ]+
- ដែនកម្រិតកំពូល មានចំនុចដែលអមដោយអក្សរធំ និងអក្សរតូច។ វាអាចមានពី 2 ទៅ 24 អក្សរ (TLD ដែលវែងបំផុតនាពេលបច្ចុប្បន្ន)៖ \.[A-Za-z]{2,24}
ចំណាំ។ លំនាំសន្មត់ថាឈ្មោះដែនមានតួអក្សរលេខ 2 ឬច្រើនជាងនេះ។
ជាមួយនឹងអត្ថបទដើមនៅក្នុង 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)
រូបមន្ត Excel IF ជាមួយការផ្គូផ្គង regex
ដោយសារតែការពិតដែលថា inbuilt និងផ្ទាល់ខ្លួនមុខងារដំណើរការបានល្អ មិនមានអ្វីអាចរារាំងអ្នកពីការប្រើប្រាស់ពួកវាជាមួយគ្នាក្នុងរូបមន្តតែមួយ។
ដើម្បីត្រឡប់ ឬគណនាអ្វីមួយ ប្រសិនបើកន្សោមធម្មតាត្រូវគ្នា និងអ្វីផ្សេងទៀតប្រសិនបើវាមិនត្រូវគ្នា សូមបង្កប់ RegExpMatch ផ្ទាល់ខ្លួន មុខងារនៅក្នុងអត្ថបទឡូជីខលនៃ IF:
IF(RegExpMatch(…), [value_if_true], [value_if_false])ឧទាហរណ៍ ប្រសិនបើខ្សែអក្សរក្នុង A5 មានអាសយដ្ឋានអ៊ីមែលត្រឹមត្រូវ អ្នកអាចត្រឡប់ "បាទ/ចាស"។ បើមិនដូច្នេះទេ "ទេ"។
=IF(RegExpMatch(A5, $A$2,), "Yes", "No")
រាប់ប្រសិនបើ regex ត្រូវបានផ្គូផ្គង
ដោយសារតែមុខងារ Excel ដើមមិនគាំទ្រកន្សោមធម្មតា វាគឺជា មិនអាចដាក់ regex ដោយផ្ទាល់នៅក្នុងមុខងារ COUNTIS ឬ COUNTIFS បានទេ។ សំណាងល្អ អ្នកអាចត្រាប់តាមមុខងារនេះដោយប្រើមុខងារផ្ទាល់ខ្លួនរបស់យើង។
ឧបមាថាអ្នកបានប្រើ regex ដើម្បីផ្គូផ្គងលេខទូរស័ព្ទ និងបញ្ចេញលទ្ធផលក្នុងជួរ B។ ដើម្បីរកមើលថាតើកោសិកាប៉ុន្មានមានលេខទូរស័ព្ទ អ្នកគ្រាន់តែត្រូវការ ដើម្បីរាប់តម្លៃពិតក្នុង B5:B9។ ហើយនោះអាចធ្វើបានយ៉ាងងាយស្រួលដោយប្រើរូបមន្តស្តង់ដារ COUNTIF៖
=COUNTIF(B5:B9, TRUE)
មិនចង់បានជួរឈរបន្ថែមណាមួយនៅក្នុងសន្លឹកកិច្ចការរបស់អ្នកទេ? គ្មានបញ្ហា។ ដោយចងចាំថាមុខងារផ្ទាល់ខ្លួនរបស់យើងអាចដំណើរការក្រឡាច្រើនក្នុងពេលតែមួយ ហើយ SUM របស់ Excel អាចបន្ថែមតម្លៃនៅក្នុងអារេមួយ នេះជាអ្វីដែលអ្នកធ្វើ៖
- ផ្គត់ផ្គង់ជួរយោងទៅ RegExpMatch ដូច្នេះវាត្រឡប់ អារេនៃតម្លៃ TRUE និង FALSE ។
- ប្រើការបដិសេធពីរដង (--) ដើម្បីបង្ខិតបង្ខំតម្លៃឡូជីខលទៅមួយ និងសូន្យ។
- ទទួលបានអនុគមន៍ SUM ដើម្បីបន្ថែម 1 និង 0 នៅក្នុងអារេលទ្ធផល។
=SUM(--RegExpMatch(A5:A9, $A$2))
ការផ្គូផ្គង Regex ជាមួយ Ultimate Suite
អ្នកប្រើប្រាស់ Ultimate Suite របស់យើងអាចប្រើប្រាស់មុខងារ Regex ដ៏មានអានុភាពចំនួនបួន ដោយមិនចាំបាច់បន្ថែមកូដ VBA ណាមួយទៅក្នុងសៀវភៅការងាររបស់ពួកគេ ដោយសារពួកវាត្រូវបានដាក់បញ្ចូលយ៉ាងរលូនទៅក្នុង Excel កំឡុងពេលដំឡើងកម្មវិធីបន្ថែម។ មុខងារផ្ទាល់ខ្លួនរបស់យើងត្រូវបានដំណើរការដោយម៉ាស៊ីនស្តង់ដារ .NET RegEx និងគាំទ្រកន្សោមធម្មតាបុរាណដែលមានលក្ខណៈពិសេសពេញលេញ។
របៀបប្រើមុខងារ RegexMatch ផ្ទាល់ខ្លួន
សន្មត់ថាអ្នកមានកំណែចុងក្រោយបំផុតនៃ Ultimate Suite ដែលបានដំឡើង ( 2021.4 ឬក្រោយ) អ្នកអាចបង្កើតរូបមន្ត Regex Match ក្នុងជំហានសាមញ្ញពីរ៖
- នៅលើផ្ទាំង Ablebits Data ក្នុងក្រុម Text ចុច ឧបករណ៍ Regex ។
- ជ្រើសរើស ខ្សែអក្សរប្រភព។
- បញ្ចូលលំនាំរបស់អ្នក។
- ជ្រើសរើសជម្រើស ផ្គូផ្គង ។
- ដើម្បីឱ្យមានលទ្ធផលជារូបមន្ត មិនមែនតម្លៃ ជ្រើសរើស បញ្ចូលជារូបមន្ត ប្រអប់ធីក។
- ចុចប៊ូតុង ផ្គូផ្គង ។
មួយសន្ទុះក្រោយមក មុខងារ AblebitsRegexMatch ត្រូវបានបញ្ចូលក្នុងជួរឈរថ្មីនៅខាងស្តាំទិន្នន័យរបស់អ្នក។
នៅក្នុងរូបថតអេក្រង់ខាងក្រោម មុខងារពិនិត្យមើលថាតើខ្សែអក្សរក្នុងជួរ A មាន 7 ខ្ទង់ឬអត់ លេខឬអត់។
គន្លឹះ៖
- មុខងារ tion អាចត្រូវបាន បញ្ចូល ដោយផ្ទាល់នៅក្នុងក្រឡា តាមរយៈប្រអប់ស្តង់ដារ បញ្ចូលអនុគមន៍ ដែលវាត្រូវបានចាត់ថ្នាក់នៅក្រោម AblebitsUDFs ។
- តាមលំនាំដើម កន្សោមធម្មតាត្រូវបានបន្ថែមទៅរូបមន្ត ប៉ុន្តែអ្នកក៏អាចរក្សាទុក វានៅក្នុងក្រឡាដាច់ដោយឡែកមួយ។ សម្រាប់បញ្ហានេះ គ្រាន់តែប្រើឯកសារយោងក្រឡាសម្រាប់អាគុយម៉ង់ទី 2។
- តាមលំនាំដើម មុខងារគឺ ប្រកាន់អក្សរតូចធំ ។ សម្រាប់ការផ្គូផ្គងអក្សរតូចធំ ប្រើលំនាំ (?i)។
សម្រាប់ព័ត៌មានបន្ថែម សូមមើលមុខងារ AbblebitsRegexMatch។
នោះជារបៀបធ្វើការផ្គូផ្គងកន្សោមធម្មតានៅក្នុង Excel។ ខ្ញុំសូមអរគុណចំពោះការអាន ហើយទន្ទឹងរង់ចាំជួបអ្នកនៅលើប្លក់របស់យើងនៅសប្តាហ៍ក្រោយ!
ការទាញយកដែលមាន
ឧទាហរណ៍ Excel Regex Match (.xlsm file)
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 សម្រាប់ iInputCurCol = 1 To cntInputCurregourCols .Cells(iInputCurRow, iInputCurCol).Value) Next Next Next RegExpMatch = arRes Exit Function ErrHandl: RegExpMatch = CVErr(xlErrValue) មុខងារបញ្ចប់បិទភ្ជាប់កូដនៅក្នុងកម្មវិធីនិពន្ធ VBA ហើយមុខងារ RegExpMatch ថ្មីរបស់អ្នក រួចរាល់សម្រាប់ការប្រើប្រាស់។ ប្រសិនបើអ្នកមិនសូវមានបទពិសោធន៍ជាមួយ VBA ទេ ការណែនាំនេះអាចមានប្រយោជន៍៖ របៀបបញ្ចូលកូដ VBA ក្នុង Excel។
ចំណាំ។ បន្ទាប់ពីបញ្ចូលកូដហើយ កុំភ្លេចរក្សាទុកឯកសាររបស់អ្នកជា សៀវភៅការងារដែលអាចប្រើម៉ាក្រូ (.xlsm)។
វាក្យសម្ព័ន្ធ RegExpMatch
មុខងារ RegExpMatch ពិនិត្យមើលថាតើផ្នែកណាមួយនៃខ្សែអក្សរប្រភពត្រូវគ្នានឹងកន្សោមធម្មតា។ លទ្ធផលគឺជាតម្លៃ Boolean៖ TRUE ប្រសិនបើការផ្គូផ្គងយ៉ាងហោចណាស់មួយត្រូវបានរកឃើញ FALSE បើមិនដូច្នេះទេ FALSE។
មុខងារផ្ទាល់ខ្លួនរបស់យើងមាន 3 អាគុយម៉ង់ - ពីរដំបូងត្រូវបានទាមទារ ហើយចុងក្រោយគឺស្រេចចិត្ត៖
RegExpMatch(text , pattern, [match_case])Where:
- Text (required) - ខ្សែអក្សរមួយ ឬច្រើនដើម្បីស្វែងរក។ អាចត្រូវបានផ្គត់ផ្គង់ជាក្រឡា ឬជួរយោង។
- លំនាំ (ទាមទារ) - កន្សោមធម្មតាដែលត្រូវគ្នា។ នៅពេលដាក់ដោយផ្ទាល់ក្នុងរូបមន្ត លំនាំត្រូវតែត្រូវបានរុំព័ទ្ធក្នុងសញ្ញាសម្រង់ទ្វេ។
- Match_case (ជាជម្រើស) - កំណត់ការផ្គូផ្គងប្រភេទ។ ប្រសិនបើពិត ឬលុបចោល (លំនាំដើម) ការផ្គូផ្គងអក្សរតូចធំត្រូវបានអនុវត្ត។ ប្រសិនបើ FALSE - មិនប្រកាន់អក្សរតូចធំ។
មុខងារនេះដំណើរការនៅគ្រប់កំណែទាំងអស់នៃ Excel 365, Excel 2021, Excel 2019, Excel 2016, Excel 2013 និង Excel 2010។
3 អ្វីដែលអ្នក គួរដឹងអំពី RegExpMatch
មុនពេលយើងទៅដល់ការគណនាជាក់ស្តែង សូមកត់សម្គាល់ចំណុចខាងក្រោមដែលបញ្ជាក់ពីបច្ចេកទេសមួយចំនួន៖
- មុខងារអាចដំណើរការ កោសិកាតែមួយ ឬ ជួរក្រឡា ។ ក្នុងករណីចុងក្រោយ លទ្ធផលត្រូវបានបញ្ជូនត្រឡប់មកវិញនៅក្នុងក្រឡាដែលនៅជិតខាងក្នុងទម្រង់ជាអារេថាមវន្ត ឬជួរកំពប់ ដូចបានបង្ហាញក្នុងឧទាហរណ៍នេះ។
- តាមលំនាំដើម មុខងារគឺ ប្រកាន់អក្សរតូចធំ<៩>។ ដើម្បីមិនអើពើករណីអត្ថបទ សូមកំណត់អាគុយម៉ង់ match_case ទៅជា FALSE ។ ដោយសារតែដែនកំណត់របស់ VBA Regexp លំនាំមិនប្រកាន់អក្សរតូចធំ (?i) មិនត្រូវបានគាំទ្រទេ។
- ប្រសិនបើរកមិនឃើញលំនាំត្រឹមត្រូវ មុខងារនឹងត្រឡប់ FALSE ។ ប្រសិនបើ លំនាំមិនត្រឹមត្រូវ នោះ #VALUE! កំហុសកើតឡើង។
ខាងក្រោម អ្នកនឹងឃើញឧទាហរណ៍ការផ្គូផ្គង regex មួយចំនួនដែលត្រូវបានបង្កើតឡើងសម្រាប់គោលបំណងបង្ហាញ។ យើងមិនអាចធានាថាគំរូរបស់យើងនឹងដំណើរការដោយគ្មានកំហុសជាមួយនឹងជួរទិន្នន័យបញ្ចូលដ៏ធំទូលាយនៅក្នុងសន្លឹកកិច្ចការពិតប្រាកដរបស់អ្នក។ មុនពេលដាក់ឱ្យដំណើរការ ត្រូវប្រាកដថាសាកល្បង និងកែតម្រូវគំរូគំរូរបស់យើងតាមតម្រូវការរបស់អ្នក។
របៀបប្រើ regex ដើម្បីផ្គូផ្គងខ្សែអក្សរក្នុង Excel
នៅពេលដែលខ្សែអក្សរទាំងអស់ដែលអ្នកចង់ផ្គូផ្គងមាន លំនាំដូចគ្នា,កន្សោមធម្មតាគឺជាដំណោះស្រាយដ៏ល្អមួយ។
ឧបមាថាអ្នកមានជួរនៃក្រឡា (A5:A9) ដែលមានព័ត៌មានលម្អិតផ្សេងៗអំពីធាតុមួយចំនួន។ អ្នកចង់ដឹងថាតើកោសិកាណាខ្លះមាន SKUs ។ ដោយសន្មតថា SKU នីមួយៗមាន 2 អក្សរធំ សហសញ្ញា និង 3 ខ្ទង់ អ្នកអាចផ្គូផ្គងពួកវាដោយប្រើកន្សោមខាងក្រោម។
លំនាំ : \b[A-Z]{2}-\ d{3}\b
កន្លែងដែល [A-Z]{2} មានន័យថាអក្សរធំទាំង 2 ពី A ដល់ Z និង \d{3} មានន័យថាលេខ 3 ខ្ទង់ណាមួយពី 0 ទៅ 9 ។ តួអក្សរ \b តំណាងឱ្យពាក្យមួយ ព្រំដែន មានន័យថា SKU គឺជាពាក្យដាច់ដោយឡែក ហើយមិនមែនជាផ្នែកនៃខ្សែអក្សរធំជាងដូចជា 23-MAR-2022។
ជាមួយនឹងលំនាំដែលបានបង្កើតឡើង យើងអាចបន្តទៅការសរសេររូបមន្ត។ ជាការសំខាន់ ការប្រើប្រាស់មុខងារផ្ទាល់ខ្លួនគឺមិនខុសពីមុខងារដើមនោះទេ។ ដរាបណាអ្នកចាប់ផ្តើមវាយរូបមន្ត នោះឈ្មោះរបស់មុខងារនឹងបង្ហាញក្នុងបញ្ជីដែលស្នើដោយកម្មវិធី Excel's AutoComplete។ ទោះយ៉ាងណាក៏ដោយ មានភាពខុសប្លែកគ្នាមួយចំនួននៅក្នុង 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 ដែលគាំទ្រអារេថាមវន្ត វាដំណើរការតាមវិធីនេះ - អ្នកវាយរូបមន្តក្នុងក្រឡាទីមួយ ចុច Enter ហើយរូបមន្តនឹងធ្លាក់ចូលក្រឡាខាងក្រោមដោយស្វ័យប្រវត្តិ។
ក្នុង Excel 2019 និងមុននេះវា ដំណើរការតែជារូបមន្តអារេ CSE ប្រពៃណី ដែលត្រូវបានបញ្ចូលក្នុងជួរក្រឡាមួយ ហើយបញ្ចប់ដោយចុចគ្រាប់ចុច Ctrl + Shift + Enter ជាមួយគ្នា។
Regex ដើម្បីផ្គូផ្គងលេខ
ដើម្បីផ្គូផ្គងលេខណាមួយពី 0 ដល់ 9 សូមប្រើតួអក្សរ \d ក្នុង regex ។ អាស្រ័យលើការងារជាក់លាក់របស់អ្នក បន្ថែមបរិមាណសមស្រប ឬបង្កើតលំនាំស្មុគស្មាញជាងនេះ។
Regex ដើម្បីផ្គូផ្គងលេខណាមួយ
ដើម្បីផ្គូផ្គងលេខណាមួយនៃប្រវែងណាមួយ ដាក់ + quantifier ភ្លាមៗបន្ទាប់ពី / d តួអក្សរ ដែលនិយាយថាត្រូវរកមើលលេខដែលមានលេខ 1 ឬច្រើនខ្ទង់។
លំនាំ : \d+
=RegExpMatch(A5:A9, "\d+")
Regex ដើម្បីផ្គូផ្គងចំនួននៃប្រវែងជាក់លាក់
ប្រសិនបើគោលដៅរបស់អ្នកគឺដើម្បីផ្គូផ្គងតម្លៃលេខដែលមានចំនួនខ្ទង់ជាក់លាក់ បន្ទាប់មកប្រើ \d រួមជាមួយនឹងបរិមាណសមស្រប។
ឧទាហរណ៍ ដើម្បីផ្គូផ្គងលេខវិក្កយបត្រដែលមាន ៧ ខ្ទង់ពិតប្រាកដ អ្នកនឹងប្រើ \d{7} ។ ទោះជាយ៉ាងណាក៏ដោយសូមចងចាំថាវានឹងផ្គូផ្គងលេខ 7ដូចដែលបានរំពឹងទុក៖
ចំណាំ៖
- លេខកូដអន្តរជាតិមិនត្រូវបានពិនិត្យទេ ដូច្នេះពួកគេអាចឬមិនមានវត្តមាន។
- នៅក្នុងកន្សោមធម្មតា \s តំណាងឱ្យតួអក្សរដកឃ្លាណាមួយ ដូចជាលំហ ផ្ទាំង ការត្រលប់មកវិញ ឬបន្ទាត់ថ្មី។ ដើម្បីអនុញ្ញាតតែដកឃ្លា ប្រើ [-\. ] ជំនួសឱ្យ [-\.\s]។
- [^13] នឹងផ្គូផ្គងតួអក្សរតែមួយដែលមិនមែនជា 1 ឬ 3។
- [^1-3] នឹងផ្គូផ្គងតួអក្សរតែមួយដែលមិនមែន 1, 2 ឬ 3 (ឧ. ខ្ទង់ណាមួយពី 1 ដល់ 3)។
- regex ខាងលើដំណើរការសម្រាប់តែខ្សែអក្សរ single-line ប៉ុណ្ណោះ។ ក្នុងករណីខ្សែអក្សរ milti-line តួអក្សរ ^ និង $ ត្រូវគ្នានឹងការចាប់ផ្តើម និងចុងបញ្ចប់នៃបន្ទាត់នីមួយៗ ជំនួសឱ្យការចាប់ផ្តើម និងចុងបញ្ចប់នៃខ្សែអក្សរបញ្ចូល ដូច្នេះ regex ស្វែងរកតែក្នុងជួរទីមួយប៉ុណ្ណោះ។
- ដើម្បីផ្គូផ្គងខ្សែអក្សរដែល មិនចាប់ផ្តើម ជាមួយអត្ថបទជាក់លាក់ សូមប្រើកន្សោមធម្មតាដូចជា ^(?!lemons)។*$
- ដើម្បីផ្គូផ្គងខ្សែអក្សរដែល មិនបញ្ចប់ ជាមួយអត្ថបទជាក់លាក់ សូមរួមបញ្ចូលយុថ្កាខ្សែអក្សរចុងទៅក្នុងលំនាំស្វែងរក៖ ^((?!lemons$))*$
Regex to NOT match character
ដើម្បីស្វែងរកខ្សែអក្សរដែលមិនមានតួអក្សរជាក់លាក់ អ្នកអាចប្រើថ្នាក់តួអក្សរអវិជ្ជមាន [^] ដែលផ្គូផ្គង អ្វីដែលមិននៅក្នុងតង្កៀប។ ឧទាហរណ៍៖
នៅក្នុងបញ្ជីលេខទូរស័ព្ទ ឧបមាថាអ្នកចង់ស្វែងរកលេខដែលមិនមានលេខកូដប្រទេស។ ដោយចងចាំថាលេខកូដអន្តរជាតិណាមួយរួមបញ្ចូលសញ្ញា + អ្នកអាចប្រើថ្នាក់តួអក្សរ [^\+] ដើម្បីស្វែងរកខ្សែអក្សរដែលមិនមានសញ្ញាបូក។ វាជាការសំខាន់ដើម្បីដឹងថាកន្សោមខាងលើត្រូវគ្នានឹងតួអក្សរតែមួយដែលមិនមែនជា + ។ ដោយសារតែលេខទូរស័ព្ទអាចស្ថិតនៅកន្លែងណាមួយក្នុងខ្សែអក្សរ មិនចាំបាច់នៅដើមដំបូងឡើយ លេខបរិមាណ * ត្រូវបានបន្ថែមដើម្បីពិនិត្យមើលតួអក្សរបន្តបន្ទាប់នីមួយៗ។ យុថ្កាចាប់ផ្តើម ^ និងបញ្ចប់ $ ធានាថាខ្សែទាំងមូលត្រូវបានដំណើរការ។ ជាលទ្ធផល យើងទទួលបានកន្សោមធម្មតាខាងក្រោមដែលនិយាយថា "មិនត្រូវគ្នានឹងតួអក្សរ + នៅក្នុងទីតាំងណាមួយនៅក្នុងខ្សែអក្សរ"។
លំនាំ ៖^[^\+]*$
=RegExpMatch(A5, "^[^\+]*$")
Regex to NOT match string
ទោះបីជាមិនមានវាក្យសម្ព័ន្ធកន្សោមធម្មតាពិសេសសម្រាប់ មិនត្រូវគ្នានឹងខ្សែអក្សរជាក់លាក់ទេ អ្នកអាចត្រាប់តាមឥរិយាបថនេះដោយប្រើការមើលទៅអវិជ្ជមាន។
ឧបមាថាអ្នកចង់រកខ្សែអក្សរដែល មិនមាន ពាក្យ "ក្រូចឆ្មា"។ កន្សោមធម្មតានេះនឹងមានប្រសិទ្ធភាព៖
លំនាំ : ^((?! lemons))*$
ច្បាស់ណាស់ ការពន្យល់ខ្លះគឺត្រូវការនៅទីនេះ។ ទិដ្ឋភាពអវិជ្ជមាន (?! lemons) មើលទៅខាងស្ដាំដើម្បីមើលថាតើមិនមានពាក្យ "ក្រូចឆ្មា" នៅខាងមុខទេ។ ប្រសិនបើ "ក្រូចឆ្មា" មិននៅទីនោះ នោះចំនុចត្រូវនឹងតួអក្សរណាមួយ លើកលែងតែការបំបែកបន្ទាត់។ កន្សោមខាងលើអនុវត្តការត្រួតពិនិត្យតែមួយប៉ុណ្ណោះ ហើយ * quantifier ធ្វើម្តងទៀតសូន្យ ឬច្រើនដង ចាប់ពីការចាប់ផ្តើមនៃខ្សែអក្សរដែលបានបោះយុថ្កាដោយ ^ ដល់ចុងបញ្ចប់នៃខ្សែអក្សរដែលបោះយុថ្កាដោយ $ ។
ដើម្បីមិនអើពើករណីអត្ថបទ យើងកំណត់អាគុយម៉ង់ទី 3 ទៅជា FALSE ដើម្បីធ្វើឱ្យមុខងាររបស់យើងមិនប្រកាន់អក្សរតូចធំ៖
=RegExpMatch(A5, $A$2, FALSE)
គន្លឹះ និងកំណត់ចំណាំ៖
ការផ្គូផ្គងអក្សរតូចតាច
នៅក្នុងកន្សោមធម្មតាបុរាណ មានលំនាំពិសេសសម្រាប់ ការផ្គូផ្គង case-insensitive (?i) ដែលមិនត្រូវបានគាំទ្រនៅក្នុង VBA RegExp។ ដើម្បីយកឈ្នះលើដែនកំណត់នេះ មុខងារផ្ទាល់ខ្លួនរបស់យើងទទួលយកអាគុយម៉ង់ជម្រើសទី 3 ដែលមានឈ្មោះថា match_case ។ ដើម្បីធ្វើការផ្គូផ្គងអក្សរតូចធំ គ្រាន់តែកំណត់វាទៅជា FALSE។
សូមនិយាយថាអ្នកចង់កំណត់កាលបរិច្ឆេទដូចជា 1-Mar-22 ឬ 01-MAR-2022។ ដើម្បីផ្គូផ្គងទម្រង់ dd-mmm-yyyy និង d-mmm-yy យើងកំពុងប្រើកន្សោមធម្មតាខាងក្រោម។
លំនាំ ៖ \b\d{1,2}-(មករាខ្ទង់គ្រប់ទីកន្លែងក្នុងខ្សែអក្សរ រួមទាំងលេខ 10 ខ្ទង់ ឬ 100 ខ្ទង់។ ប្រសិនបើនេះមិនមែនជាអ្វីដែលអ្នកកំពុងស្វែងរកទេ សូមដាក់ពាក្យ boundary \b ទាំងសងខាង។
Pattern : \b\d{7}\b
=RegExpMatch(A5:A9, "\b\d{7}\b")
Regex ដើម្បីផ្គូផ្គងលេខទូរស័ព្ទ
ចាប់តាំងពីលេខទូរស័ព្ទអាចត្រូវបានសរសេរក្នុងទម្រង់ផ្សេងៗគ្នា ការផ្គូផ្គងពួកវាតម្រូវឱ្យមានកន្សោមធម្មតាដែលស្មុគ្រស្មាញជាងមុន។
នៅក្នុងសំណុំទិន្នន័យខាងក្រោម យើងនឹងស្វែងរកលេខ 10 ខ្ទង់ដែលមាន 3 ខ្ទង់ក្នុងក្រុម 2 ដំបូង និង 4 ខ្ទង់នៅក្នុងក្រុមចុងក្រោយ។ ក្រុមអាចត្រូវបានបំបែកដោយមានសញ្ញាដកសញ្ញា ឬដកឃ្លា។ ក្រុមទីមួយអាចឬមិនអាចត្រូវបានរុំព័ទ្ធក្នុងវង់ក្រចក។
លំនាំ៖ (\(\d{3}\)