logo

وظيفة MySQL REGEXP_REPLACE()

يتم استخدام الدالة MySQL REGEXP_REPLACE() لمطابقة الأنماط. هذه الوظيفة يبحث في سلسلة عن نمط تعبير عادي ويستبدل كل تكرار للنمط بالسلسلة المحددة التي تطابق نمط التعبير العادي المحدد. إذا تم العثور على التطابق، فسيتم إرجاع السلسلة بأكملها مع البدائل. إذا لم يتم العثور على أي تطابق، فلن تتغير السلسلة التي تم إرجاعها. إذا كان التعبير والأنماط وسلسلة الاستبدال فارغة، فسترجع الدالة NULL.

REGEXP_REPLACE()، استبدال()، و الترجمة () وظيفة في ماي إس كيو إل تعمل بنفس الطريقة، باستثناء أن TRANSLATE تسمح لنا بإجراء بدائل متعددة للأحرف الفردية وتستبدل وظيفة REPLACE سلسلة كاملة بسلسلة أخرى، بينما تبحث REGEXP_REPLACE عن سلسلة لنمط تعبير عادي.

بناء الجملة

فيما يلي بناء الجملة الأساسي لاستخدام هذه الوظيفة في MySQL:

 REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]]) 

شرح المعلمة

شرح معلمات الدالة REGEXP_REPLACE() هي:

تعبير: إنها سلسلة إدخال سنقوم بالبحث عليها من خلال معلمات ووظائف التعبيرات العادية.

أنماط: وهو يمثل نمط التعبير العادي لسلسلة فرعية.

استبدال_سلسلة: إنها سلسلة فرعية سيتم استبدالها إذا تم العثور على التطابق.

تستخدم الدالة REGEXP_INSTR() معلمات اختيارية متنوعة مذكورة أدناه:

نقاط البيع: يتم استخدامه لتحديد الموضع في التعبير داخل السلسلة لبدء البحث. إذا لم نحدد هذه المعلمة، فسوف تبدأ من الموضع 1.

حادثة: يتم استخدامه لتحديد حدوث التطابق الذي سنبحث عنه. إذا لم نحدد هذه المعلمة، فسيتم استبدال كافة التكرارات.

نوع مباراة: إنها سلسلة تسمح لنا بتحسين التعبير العادي. يستخدم الأحرف المحتملة التالية لإجراء المطابقة.

ما هو مخضرم
    ج:وهو يمثل مطابقة حساسة لحالة الأحرف.أنا:وهو يمثل مطابقة غير حساسة لحالة الأحرف.م:إنه يمثل وضعًا متعدد الأسطر يسمح بإنهاء الأسطر داخل السلسلة. بشكل افتراضي، تطابق هذه الدالة إنهاء الأسطر في بداية السلسلة ونهايتها.ن:يتم استخدامه لتعديل . (نقطة) حرف لمطابقة نهايات السطر.في:إنه يمثل نهايات أسطر Unix فقط.

دعونا نفهم ذلك مع أمثلة مختلفة.

مثال

يشرح البيان التالي المثال الأساسي لوظيفة REGEXP_REPLACE في MySQL.

 mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String'; 

هنا هو الإخراج:

وظيفة MySQL REGEXP_REPLACE()

لنفترض أن سلسلة الإدخال لدينا تحتوي على تطابقات متعددة داخل السلسلة ، فإن هذه الوظيفة ستحل محلها جميعًا. انظر التصريحات أدناه:

 mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String'; 

هنا هو الإخراج:

وظيفة MySQL REGEXP_REPLACE()

إذا لم يكن هناك تطابق بين سلسلة الإدخال والسلسلة القابلة للاستبدال، فستُرجع العبارات السلسلة الأصلية. انظر المثال أدناه:

 mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String'; 

هنا هو الإخراج:

وظيفة MySQL REGEXP_REPLACE()

إذا أردنا استبدال السلسلة بـ تحديد الموقف لبدء الاستبدال، يمكننا استخدام الدالة REGEX_REPLACE كما يلي:

 mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String'; 

في هذا البيان، قمنا بتحديد الموضع على أنه 2 لبدء الاستبدال. عند تنفيذ هذا الاستعلام، سنحصل على الإخراج أدناه حيث يمكننا أن نرى أن الموضع الأول للسلسلة القابلة للاستبدال لم يتم استبداله.

وظيفة MySQL REGEXP_REPLACE()

نحن نعلم أنه يتم استبدال كافة تكرارات السلسلة المطابقة افتراضيًا. ومع ذلك، لدينا أيضًا خيار لتحديد التكرار المحدد لاستبدال السلسلة المطابقة باستخدام حادثة معامل. انظر المثال أدناه:

 mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String'; 

في هذا المثال، موضع البداية للسلسلة القابلة للاستبدال هو 2 الذي جاء بعد بدء التواجد الأول. لذلك، أصبح الحدث 2 هو الحدث 1، والحدث 3 أصبح هو الحدث 2. انظر الإخراج أدناه:

وظيفة MySQL REGEXP_REPLACE()

يمكننا توفير معلمة إضافية لتحسين التعبير العادي باستخدام وسيطات نوع المطابقة. على سبيل المثال ، يمكننا استخدامه للتحقق مما إذا كانت المطابقة حساسة لحالة الأحرف أو تتضمن أطراف إنهاء الأسطر. انظر المثال أدناه حيث نحدد أ حساسية الموضوع و مطابقة غير حساسة لحالة الأحرف:

 mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'c') AS ' Case-Sensitive', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'i') AS ' Case-Insensitive'; 

هنا هو الإخراج:

وظيفة MySQL REGEXP_REPLACE()