جدول المحتويات
لا تستطيع أبدًا فهم سبب عدم دعم التعبيرات العادية في صيغ Excel؟ الآن ، هم :) من خلال وظائفنا المخصصة ، يمكنك بسهولة العثور على السلاسل المطابقة لنمط معين واستبدالها واستخراجها وإزالتها.
للوهلة الأولى ، يحتوي Excel على كل ما قد تحتاجه لسلسلة نصية التلاعب. حسنًا ... ماذا عن التعبيرات النمطية؟ عفوًا ، لا توجد وظائف Regex مضمنة في Excel. لكن لا أحد يقول أنه لا يمكننا إنشاء تعبيراتنا الخاصة :)
ما هو التعبير العادي؟
تعبير عادي (الملقب regex أو regexp ) عبارة عن سلسلة مشفرة بشكل خاص من الأحرف التي تحدد نمط البحث. باستخدام هذا النمط ، يمكنك العثور على مجموعة أحرف مطابقة في سلسلة أو التحقق من صحة إدخال البيانات. إذا كنت معتادًا على تدوين حرف البدل ، فيمكنك التفكير في regex كإصدار متقدم من أحرف البدل.
تحتوي التعبيرات العادية على تركيبها الخاص الذي يتكون من أحرف خاصة وعوامل تشغيل وبنيات. على سبيل المثال ، تتطابق [0-5] مع أي رقم فردي من 0 إلى 5.
تُستخدم التعبيرات العادية في العديد من لغات البرمجة بما في ذلك JavaScript و VBA. يحتوي الأخير على كائن RegExp خاص ، والذي سنستخدمه لإنشاء وظائفنا المخصصة.
هل يدعم Excel regex؟
للأسف ، لا توجد وظائف Regex مضمنة في Excel. لتتمكن من استخدام التعبيرات العادية في الصيغ الخاصة بك ، سيتعين عليك إنشاء دالة معرفة من قبل المستخدم (VBAالوسيطات:
=IF(RegExpMatch(A5, $A$2), "Yes", "No")
لمزيد من أمثلة الصيغ ، يرجى الاطلاع على:
- كيفية مطابقة السلاسل باستخدام التعبيرات العادية
- التحقق من صحة بيانات Excel مع regexes
وظيفة Excel Regex Extract
تبحث الدالة RegExpExtract عن السلاسل الفرعية التي تطابق تعبيرًا عاديًا وتستخرج جميع التطابقات أو تطابق محدد.
RegExpExtract (نص ، نمط ، [example_num] ، [match_case])المكان:
- Text (مطلوب) - السلسلة النصية للبحث في.
- Pattern (مطلوب) - التعبير العادي الذي يجب مطابقته.
- Instance_num (اختياري) - رقم تسلسلي يشير إلى مثيل مقتطف. في حالة الحذف ، تُرجع جميع المطابقات التي تم العثور عليها (افتراضي).
- Match_case (اختياري) - تحدد ما إذا كانت مطابقة (TRUE أو تم حذفها) أو تجاهل (FALSE) حالة النص.
يمكنك الحصول على رمز الوظيفة هنا.
مثال: كيفية استخراج السلاسل باستخدام التعبيرات العادية
إذا أخذنا مثالنا أكثر قليلاً ، فلنستخرج أرقام الفاتورة. لهذا ، سنستخدم تعبيرًا عاديًا بسيطًا للغاية يتطابق مع أي رقم مكون من 7 أرقام:
Pattern : \ b \ d {7} \ b
ضع النمط الموجود في A2 وستنجز المهمة بهذه الصيغة المدمجة والأنيقة:
=RegExpExtract(A5, $A$2)
إذا تمت مطابقة النمط ، تستخرج الصيغة رقم فاتورة ، إذا لم يتم العثور على تطابق - لم يتم إرجاع أي شيء.
لمزيد من الأمثلة ، يرجى الاطلاع على: كيفية استخراج السلاسل في Excelباستخدام regex.
وظيفة استبدال Excel Regex
تستبدل الدالة RegExpReplace القيم المطابقة للتعبير المعتاد مع النص الذي تحدده.
RegExpReplace (نص ، نمط ، استبدال ، [example_num]، [match_case])حيث:
- Text (مطلوب) - السلسلة النصية للبحث فيها.
- النقش (مطلوب) - التعبير العادي الذي يجب مطابقته.
- استبدال (مطلوب) - النص المراد استبدال السلاسل الفرعية المتطابقة به.
- Instance_num (اختياري) - المثيل المراد استبداله. الافتراضي هو "جميع التطابقات".
- Match_case (اختياري) - يتحكم في مطابقة (TRUE أو مهملة) أو تجاهل (FALSE).
رمز الوظيفة متاح هنا.
مثال: كيفية استبدال أو إزالة السلاسل باستخدام regexes
تحتوي بعض سجلاتنا على أرقام بطاقات الائتمان. هذه المعلومات سرية ، وقد ترغب في استبدالها بشيء أو حذفها تمامًا. يمكن إنجاز كلا المهمتين بمساعدة وظيفة RegExpReplace . كيف؟ في السيناريو الثاني ، سنستبدل بسلسلة فارغة.
في نموذج الجدول لدينا ، تحتوي جميع أرقام البطاقات على 16 رقمًا ، وهي مكتوبة في 4 مجموعات مفصولة بمسافات. للعثور عليهم ، نكرر النمط باستخدام هذا التعبير العادي:
النمط : \ b \ d {4} \ d {4} \ d {4} \ d {4} \ b
للاستبدال ، يتم استخدام السلسلة التالية:
استبدال : XXXX XXXX XXXXXXXX
وإليك صيغة كاملة لـ استبدال أرقام بطاقة الائتمان بمعلومات غير حساسة:
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX")
مع regex والنص البديل في خلايا منفصلة ( A2 و B2) ، تعمل الصيغة بشكل جيد:
في Excel ، "الإزالة" هي حالة خاصة من "الاستبدال". لإزالة أرقام بطاقة الائتمان ، ما عليك سوى استخدام سلسلة فارغة ("") للوسيطة الاستبدال :
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "")
نصيحة. للحصول على معدات من الأسطر الفارغة في النتائج ، يمكنك استخدام وظيفة RegExpReplace أخرى كما هو موضح في هذا المثال: كيفية إزالة الأسطر الفارغة باستخدام regex.
لمزيد من المعلومات ، يرجى الاطلاع على:
- كيفية استبدال السلاسل في Excel باستخدام regex
- كيفية إزالة السلاسل باستخدام regex
- كيفية إزالة المسافات البيضاء باستخدام regexes
Regex Tools للمطابقة والاستخراج واستبدال وإزالة السلاسل الفرعية
يمكن لمستخدمي Ultimate Suite الحصول على كل قوة التعبيرات العادية دون إدخال سطر واحد من التعليمات البرمجية في مصنفاتهم. تتم كتابة جميع التعليمات البرمجية الضرورية من قبل المطورين لدينا ويتم دمجها بشكل سلس في Excel أثناء التثبيت.
على عكس وظائف VBA التي تمت مناقشتها أعلاه ، فإن وظائف Ultimate Suite تعتمد على .NET ، مما يعطي ميزتين رئيسيتين:
- يمكنك استخدام التعبيرات العادية في مصنفات .xlsx العادية دون إضافة أي تعليمات برمجية لـ VBA والحاجة إلى حفظها كملفات ممكنة بماكرو.التعبيرات العادية ، التي تتيح لك إنشاء أنماط أكثر تعقيدًا.
كيفية استخدام Regex في Excel
مع تثبيت Ultimate Suite ، يكون استخدام التعبيرات العادية في Excel أمرًا بسيطًا مثل هاتين الخطوتين :
- في علامة التبويب بيانات Ablebits ، في المجموعة نص ، انقر فوق أدوات Regex .
- في جزء أدوات Regex ، قم بما يلي:
- حدد بيانات المصدر.
- أدخل نمط regex الخاص بك.
- اختر الخيار المطلوب: تطابق ، استخراج ، إزالة أو استبدال .
- للحصول على النتيجة كما يلي الصيغة وليس القيمة ، حدد خانة الاختيار إدراج كصيغة .
- اضغط على زر الإجراء.
على سبيل المثال ، لإزالة أرقام بطاقات الائتمان من الخلايا A2: A6 ، نقوم بتكوين هذه الإعدادات:
في لمحة خاطفة ، سيتم إدراج وظيفة AblebitsRegex في عمود جديد على يمين الأصل الخاص بك بيانات. في حالتنا ، الصيغة هي:
=AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")
بمجرد وجود الصيغة ، يمكنك تحريرها أو نسخها أو نقلها مثل أي صيغة أصلية.
كيفية إدراج صيغة Regex مباشرة في خلية
يمكن أيضًا إدراج وظائف AblebitsRegex مباشرة في خلية دون استخدام واجهة الوظيفة الإضافية. وإليك الطريقة:
- انقر فوق الزر fx على شريط الصيغة أو إدراج دالة في علامة التبويب الصيغ .
- في مربع الحوار إدراج دالة ، حدد AblebitsUDFs ، اختر الوظيفة التي تريدها ، ثم انقر فوق "موافق".
- حدد وسيطات الوظيفة كما تفعل عادةً وانقر فوق "موافق". تم!
لمزيد من المعلومات ، يرجى الاطلاع على أدوات Regex لـ Excel.
هذه هي كيفية استخدام التعبيرات العادية لمطابقة النص واستخراجه واستبداله وإزالته في خلايا Excel. أشكرك على القراءة وأتطلع إلى رؤيتك على مدونتنا الأسبوع المقبل!
التنزيلات المتاحة
Excel Regex - أمثلة للصيغ (ملف .xlsm)
Ultimate Suite - نسخة تجريبية (ملف exe.)
أو NET.) أو تثبيت أدوات الجهات الخارجية التي تدعم regexes.ورقة الغش في Excel Regex
سواء كان نمط regex بسيطًا جدًا أو معقدًا للغاية ، فقد تم إنشاؤه باستخدام الصيغة الشائعة. لا يهدف هذا البرنامج التعليمي إلى تعليمك التعبيرات العادية. لهذا ، هناك الكثير من الموارد عبر الإنترنت ، من البرامج التعليمية المجانية للمبتدئين إلى الدورات المتميزة للمستخدمين المتقدمين.
نقدم أدناه مرجعًا سريعًا لأنماط RegEx الرئيسية التي ستساعدك على فهم الأساسيات. قد تعمل أيضًا بمثابة ورقة غش عند دراسة أمثلة أخرى.
إذا كنت راضيًا عن التعبيرات العادية ، يمكنك الانتقال مباشرة إلى وظائف RegExp.
الأحرف
هذه هي الأنماط الأكثر استخدامًا لمطابقة أحرف معينة.
النمط | الوصف | مثال | المطابقات |
. | حرف البدل: يطابق أي حرف واحد باستثناء فاصل الأسطر | .ot | النقطة ، ساخن ، قدر ، ot |
\ d | حرف رقمي: أي رقم فردي من 0 إلى 9 | \ d | في a1b ، تطابق 1 |
\ D | أي حرف ليس رقمًا | \ D | في a1b ، يتطابق مع a و b |
\ s | حرف المسافة البيضاء: مسافة وعلامة جدولة وسطر جديد وحرف إرجاع | . \ s. | In 3 سنتات ، تطابق 3 c |
\ S | أيحرف بدون مسافة بيضاء | \ S + | في 30 سنتًا ، يطابق 30 و سنتًا |
\ w | حرف كلمة: أي حرف ASCII أو رقم أو شرطة سفلية | \ w + | في 5_cats *** ، يطابق 5_cats |
\ W | أي حرف ليس حرفًا أبجديًا رقميًا أو شرطة سفلية | \ W + | في 5_cats *** ، تطابق *** |
\ t | Tab | ||
\ n | سطر جديد | \ n \ d + | في السطرين السلسلة أدناه ، تطابق 10 5 قطط 10 كلاب |
\ | تهرب من المعنى الخاص للشخصية ، لذا يمكنك ابحث عنه | \. \ w + \. | يهرب نقطة حتى تتمكن من العثور على الحرف "." حرف في سلسلة السيد ، السيدة ، الأستاذ. |
فئات الأحرف
باستخدام هذه الأنماط ، يمكنك مطابقة عناصر من مجموعات أحرف مختلفة.
النمط | الوصف | مثال | يطابق |
[حرفًا] | يطابق أي حرف واحد بين القوسين | d [oi] g | كلب و حفر |
[^ حرف] | يطابق أي حرف واحد ليس بين القوسين | d [^ oi] g | المطابقات dag ، dug ، d1g غير متطابق مع dog و حفر |
[من – إلى] | يطابق أي حرف في النطاق بينالأقواس | [0-9] [a-z] [A-Z] | أي رقم فردي من 0 إلى 9 أي حرف صغير مفرد أي حرف كبير مفرد |
المحددات الكمية
المحددات الكمية هي تعبيرات خاصة تحدد عدد الأحرف المراد مطابقتها. يُطبق المُحدِّد الكمي دائمًا على الحرف الذي يسبقه.
النمط | الوصف | مثال | يطابق |
* | صفر أو أكثر من مرات الحدوث | 1a * | 1، 1a ، 1aa، 1aaa ، إلخ. |
+ | مرة واحدة أو أكثر | po + | في وعاء ، يطابق po في ضعيف ، يتطابق مع poo |
؟ | صفر أو ورود واحد | roa؟ d | طريق ، قضيب |
*؟ | صفر أو أكثر من التكرارات ، ولكن أقل قدر ممكن | 1a *؟ | في 1a ، 1aa و 1aaa ، تطابق 1a |
+؟ | مرة واحدة أو أكثر ، ولكن أقل قدر ممكن | po +؟ | في وعاء و رديء ، يطابق po |
؟؟ | بدون ورود واحد ، ولكن أقل قدر ممكن | roa ؟؟ | في road و rod ، تطابق ro |
{n} | يطابق النمط السابق n مرة | \ d {3} | 3 أرقام بالضبط |
{ن ،} | يطابق النمط السابق n أو مرات أكثر | \ d {3،} | 3 أرقام أو أكثر |
{n، m} | يتطابق معالنمط السابق بين n و m مرة | \ d {3،5} | من 3 إلى 5 أرقام |
التجميع
تُستخدم بنيات التجميع لالتقاط سلسلة فرعية من السلسلة المصدر ، حتى تتمكن من إجراء بعض العمليات معها.
بناء الجملة | الوصف | مثال | المطابقات |
(النمط) | التقاط المجموعة: يلتقط سلسلة فرعية مطابقة ويخصص لها رقمًا ترتيبيًا | (\ d +) | في 5 قطط و 10 كلاب ، تلتقط 5 (المجموعة 1) و 10 (المجموعة 2) |
(؟: pattern) | مجموعة غير ملتقطة: تطابق مجموعة ولكنها لا تلتقطها | (\ d +) (؟: كلاب) | في 5 قطط و 10 كلاب ، يلتقط 10 |
\ 1 | محتويات المجموعة 1 | (\ d +) \ + (\ d +) = \ 2 \ + \ 1 | تطابق 5 + 10 = 10 + 5 ويلتقط 5 و 10 ، الموجودة في مجموعات الالتقاط |
\ 2 | محتويات المجموعة 2 |
المراسي
تحدد المراسي موضعًا في سلسلة الإدخال حيث يتم البحث عنها تطابق.
مرساة | الوصف | مثال | المطابقات |
^ | بداية السلسلة ملاحظة: [^ الأقواس الداخلية] تعني "ليس" | ^ \ d + | أي عدد من الأرقام في بداية السلسلة. في 5 قطط و 10 كلاب ، تطابق 5 |
$ | نهاية السلسلة | \ d + $ | أي عدد من الأرقام في نهاية السلسلة. في 10Y |
(؟ & lt؛ =) | نظرة موجبة للخلف | (؟ & lt؛ = Y) X | تطابق التعبير X عندما يسبقه Y (أي إذا كان هناك Y خلف X) |
(؟ | التراجع السلبي للخلف | (؟ | يطابق التعبير X عندما لا يسبقه Y |
الآن بعد أن تعرفت على الأساسيات ، دعنا ننتقل إلى الجزء الأكثر إثارة للاهتمام - باستخدام regexes على البيانات الحقيقية لتحليل السلاسل والعثور على المعلومات المطلوبة. إذا كنت بحاجة إلى مزيد من التفاصيل حول بناء الجملة ، فقد يكون دليل Microsoft حول لغة التعبير العادي مفيدًا.
وظائف RegEx المخصصة لـ Excel
كما ذكرنا سابقًا ، لا يحتوي Microsoft Excel على وظائف RegEx مضمنة. لتمكين التعبيرات العادية ، أنشأنا ثلاث وظائف مخصصة لـ VBA (تُعرف أيضًا بالوظائف التي يحددها المستخدم). يمكنك نسخ الرموز من الصفحات المرتبطة أدناه أو من نموذجنا المصنف ، ثم الصقه في ملفات Excel الخاصة بك.
كيف تعمل وظائف VBA RegExp
يشرح هذا القسم الآليات الداخلية وقد يكون صحيحًا تظهر لأولئك الذين يريدون معرفة بالضبط ما يحدث في الخلفية.
لبدء استخدام التعبيرات العادية في VBA ، تحتاج إما إلى تنشيط مكتبة مرجع كائن RegEx أو استخدام وظيفة CreateObject. لتوفير مشكلة تعيين المرجع في محرر VBA ، اخترنا الطريقة الأخيرة.
يحتوي كائن RegExp على 4 خصائص:
- Pattern - هل نمط للمطابقة في سلسلة الإدخال.
- عام - يتحكم في العثور على جميع التطابقات في سلسلة الإدخال أو أول واحد فقط. في وظائفنا ، يتم تعيينه على True للحصول على جميع المطابقات .
- MultiLine - يحدد ما إذا كان سيتم مطابقة النمط عبر فواصل الأسطر في سلاسل متعددة الأسطر أو فقط في السطر الأول. في أكوادنا ، يتم تعيينه على True للبحث عن في كل سطر .
- IgnoreCase - يحدد ما إذا كان التعبير العادي حساسًا لحالة الأحرف (افتراضيًا) أم حالة- غير حساس (مضبوط على "صواب"). في حالتنا ، يعتمد ذلك على كيفية تكوين المعلمة الاختيارية match_case . بشكل افتراضي ، تكون جميع الوظائف حساسة لحالة الأحرف .
قيود VBA RegExp
يقوم Excel VBA بتنفيذ أنماط regex الأساسية ، ولكنه يفتقر إلى العديد من الميزات المتقدمة متاح في .NET و Perl و Java ومحركات regex الأخرى. على سبيل المثال ، لا يدعم VBA RegExp المُعدِّلات المضمنة مثل (؟ i) للمطابقة غير الحساسة لحالة الأحرف أو (؟ m) للوضع متعدد الخطوط ، أو التراجع الخلفي ، أو فئات POSIX ، على سبيل المثال لا الحصر.
Excel Regex دالة المطابقة
تبحث الدالة RegExpMatch عن سلسلة إدخال للنص الذي يطابق تعبيرًا عاديًا وتُرجع TRUE إذا تم العثور على تطابق ، وإلا فالخطأ.
RegExpMatch (نص ، نمط ، [ match_case])حيث:
- Text (مطلوب) - سلسلة أو أكثر للبحث فيها.
- Pattern ( مطلوب) - النظاميتعبير للمطابقة.
- Match_case (اختياري) - نوع المطابقة. صواب أو محذوف - حساس لحالة الأحرف ؛ خطأ - غير حساس لحالة الأحرف
رمز الوظيفة موجود هنا.
مثال: كيفية استخدام التعبيرات العادية لمطابقة السلاسل
في مجموعة البيانات أدناه ، افترض أنك تريد لتحديد الإدخالات التي تحتوي على رموز SKU.
بالنظر إلى أن كل SKU يبدأ بحرفين كبيرين ، متبوعين بواصلة ، متبوعة بأربعة أرقام ، يمكنك مطابقتهم باستخدام التعبير التالي.
النمط : \ b [A-Z] {2} - \ d {4} \ b
حيث يعني [A-Z] {2} أي حرفين كبيرين من A إلى Z و \ d {4 } تعني أي 4 أرقام من 0 إلى 9. تشير كلمة حد \ b إلى أن SKU هي كلمة منفصلة وليست جزءًا من سلسلة أكبر.
مع إنشاء النمط ، ابدأ في كتابة صيغة كما تفعل عادةً ، وسيظهر اسم الوظيفة في القائمة التي اقترحها الإكمال التلقائي لبرنامج Excel:
بافتراض أن السلسلة الأصلية في A5 ، فإن الصيغة ستظهر على النحو التالي:
=RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")
للتيسير ، يمكنك إدخال التعبير العادي في خلية منفصلة واستخدام مرجع مطلق ($ A $ 2) للنمط argumen ر. هذا يضمن أن عنوان الخلية سيبقى دون تغيير عند نسخ الصيغة إلى خلايا أخرى:
=RegExpMatch(A5, $A$2)
لعرض التسميات النصية الخاصة بك بدلاً من TRUE و FALSE ، قم بتداخل RegExpMatch في دالة IF و حدد النصوص المطلوبة في value_if_true و value_if_false يعطي زائد 5 15 ، يطابق 15
بناء التناوب (OR)
يُمكّن معامل التناوب منطق OR ، لذا يمكنك مطابقة هذا العنصر أو ذاك.
إنشاء | الوصف | المثال | المطابقات |