تخطَّ إلى المحتوى

شرح Java

التعابير النمطية (Regex)

الدرس 32 من 42· ⏱ 2 دقائق قراءة

ما هو Regex؟

نمط نصي يُستخدم للبحث عن مطابقة أو التحقق من شكل بيانات — مثل البريد الإلكتروني أو رقم الهاتف.

Pattern و Matcher

import java.util.regex.Pattern;
import java.util.regex.Matcher;

Pattern pattern = Pattern.compile("\\d+");   // أرقام فقط
Matcher matcher = pattern.matcher("لدي 5 تفاحات و12 موزة");

while (matcher.find()) {
  System.out.println("وجدت: " + matcher.group());
}
// طباعة: وجدت: 5
// طباعة: وجدت: 12

الصيغة الأساسية

النمطالمعنى
.أي حرف واحد
\dرقم (0-9)
\wحرف أو رقم أو _
\sمسافة بيضاء
+مرة واحدة أو أكثر
*صفر أو أكثر
?صفر أو مرة واحدة
{n,m}من n إلى m مرة
[abc]أي حرف من المجموعة
[^abc]أي حرف ليس من المجموعة
(group)تجميع جزء من النمط

أمثلة عملية

التحقق من بريد إلكتروني

String email = "user@example.com";
boolean valid = email.matches("[\\w.]+@[\\w.]+\\.[a-z]+");
System.out.println(valid); // true

استخراج أرقام الهاتف

String text = "اتصل بـ0551234567 أو 0509876543";
Pattern p = Pattern.compile("0\\d{9}");
Matcher m = p.matcher(text);
while (m.find()) {
  System.out.println("هاتف: " + m.group());
}

replacesAll و split

String cleaned = "السعر: 100$ + 50$";
String noSymbols = cleaned.replaceAll("[^\\d\\s]", ""); // "100 50"

String[] parts = "one,two,three".split(","); // ["one","two","three"]

Flags (أعلام)

// تجاهل حالة الأحرف
Pattern.compile("hello", Pattern.CASE_INSENSITIVE);

// أو في الصيغة المختصرة:
"HELLO".matches("(?i)hello"); // true

نمط البريد الإلكتروني الكامل

String regex = "^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$";
String email = "test@site.com";
System.out.println(email.matches(regex)); // true

متى نستخدم Regex؟

  • التحقق: صيغة البريد أو الهاتف أو كلمة المرور.
  • الاستخراج: أرقام أو تواريخ من نص طويل.
  • التنظيف: إزالة رموز غير مرغوبة أو توحيد المسافات.

⚠️ Regex يمكن أن تصبح معقّدة جدًا — ابدأ بسيطًا واختبر كل نمط على حالات متعددة.

🎯 التالي: البرمجة متعددة الخيوط (Multithreading).

شرح التعابير النمطية (Regex) — Java بالعربي
التعابير النمطية (Regex)Java بالعربي · The Code Fix

📚 لمزيد من التعمّق في Java، راجِع توثيق Java من Oracle.

هل كان هذا الدرس مفيدًا؟