التعبير العادي عبارة عن صيغة تستخدم نمطًا معينًا لمطابقة نوع من السلسلة. يتكون التعبير العادي من بعض الأحرف العادية وبعض الأحرف الأولية. تتضمن الأحرف العادية أحرفًا وأرقامًا كبيرة وصغيرة، في حين أن الأحرف الأولية لها معاني خاصة سواء كانت منصة .Net أو منصة Java، فإن المعنى الذي تعبر عنه التعبيرات العادية هو نفسه فيما يلي نقوم بتحليل وظائف تعبيرات Java العادية بشكل أساسي تطبيقات محددة وآمل أن تكون هذه المقالة مفيدة لك وهي مرجعية فقط.
منذ أن أطلق jdk1.4 حزمة java.util.regex، فقد زودنا بمنصة جيدة لتطبيق تعبيرات Java العادية، لأن تعبيرات Java العادية نظام معقد للغاية.
// شرطة مائلة عكسية
الفاصل الزمني /t('/u0009')
/n تغذية السطر ('/u000A')
/ ص أدخل ('/u000D')
/d يعادل عددياً [0-9]
/D غير الرقم يعادل [^0-9]
/s مسافة بيضاء [/t/n/x0B/f/r]
/S حرف بدون مسافة بيضاء [^/t/n/x0B/f/r]
/w الأحرف الفردية [a-zA-Z_0-9]
/W أحرف غير منفصلة [^a-zA-Z_0-9]
/f حرف تغذية النموذج
/ه الهروب
/ب حد الكلمة
/B حد غير كلمة
/G نهاية المباراة السابقة
^ يبدأ بالقيود
يقتصر شرط ^java على الأحرف التي تبدأ بـ Java
$ هو نهاية التقييد
يقتصر شرط Java$ على Java كحرف النهاية
الشرط يقيد أي حرف واحد باستثناء /n
java.. يقتصر الشرط على أي حرفين بعد Java باستثناء السطر الجديد
إضافة قيود محددة "[]"
يقتصر شرط [az] على حرف واحد في نطاق الأحرف الصغيرة من a إلى z
يقتصر شرط [AZ] على حرف واحد في النطاق الكبير من A إلى Z
يقتصر شرط [a-zA-Z] على حرف واحد في نطاق الأحرف الصغيرة من a إلى z أو الأحرف الكبيرة من A إلى Z
[0-9] يقتصر الشرط على حرف واحد في نطاق الأحرف الصغيرة من 0 إلى 9
[0-9a-z] يقتصر الشرط على حرف واحد في نطاق الأحرف الصغيرة من 0 إلى 9 أو من a إلى z
[0-9[az]] يقتصر الشرط على حرف واحد (تقاطع) في نطاق الأحرف الصغيرة من 0 إلى 9 أو من a إلى z
أضف ^ إلى [] ثم قم بإضافة قيد آخر "[^]"
يقتصر شرط [^az] على حرف واحد في نطاق الحروف غير الصغيرة من a إلى z
يقتصر شرط [^AZ] على حرف واحد في النطاق الذي لا يحتوي على حرف كبير من A إلى Z
[^a-zA-Z] يقتصر الشرط على حرف واحد في نطاق الحروف غير الصغيرة من a إلى z أو الأحرف الكبيرة من A إلى Z
[^0-9] يقتصر الشرط على حرف واحد في نطاق غير صغير من 0 إلى 9
[^0-9a-z] يقتصر الشرط على حرف واحد في نطاق غير صغير من 0 إلى 9 أو من a إلى z
[^0-9[az]] يقتصر الشرط على حرف واحد (تقاطع) في نطاق غير صغير من 0 إلى 9 أو من a إلى z
عندما يكون شرط التقييد هو ظهور حرف معين أكثر من 0 مرة، يمكنك استخدام "*"
J* أكثر من 0J
.* 0 حرفًا أو أكثر
J.* أكثر من 0 حرف بين DJ وD
عندما يكون شرط التقييد هو ظهور حرف معين أكثر من مرة، يمكنك استخدام "+"
ي+1 أو أكثر ي
.+ 1 أو أكثر من الشخصيات
J.+1 حرف أو أكثر بين DJ وD
عندما يكون القيد هو ظهور حرف معين 0 مرة أو أكثر، فيمكنك استخدام "؟"
يظهر JA؟
يقتصر على العدد المحدد من التكرارات المتتالية للحرف "{a}"
ي{2} جي جي
ي{3} ججج
هناك أكثر من حرف، و"{a،}"
J{3,} JJJ,JJJJ,JJJJJ,؟؟؟(J يتواجد أكثر من 3 مرات)
أكثر من حرف وأقل من حرف b "{a,b}"
J{3,5} JJJ أو JJJJ أو JJJJJ
اختر واحدًا من الاثنين "|"
J|AJ أو A
جافا|مرحبا جافا أو مرحبا
"()" تحدد نوع المجموعة <BR>على سبيل المثال، إذا قمت بالاستعلام عن البيانات بين <a href></a> في <a href="index.html/">الفهرس</a>، فيمكن كتابتها مثل <a .*href=/".*/">(.+?)</a>
عند استخدام وظيفة Pattern.compile، يمكنك إضافة معلمات تتحكم في سلوك المطابقة لتعبيرات Java العادية:
نمط Pattern.compile (سلسلة regex، علامة int)
نطاق قيمة العلم هو كما يلي:
Pattern.CANON_EQ يتم اعتبار المطابقة إذا وفقط إذا كان "التحليل الأساسي" للحرفين متماثلين تمامًا. على سبيل المثال، بعد استخدام هذه العلامة، سيتطابق التعبير "a/u030A" مع "؟". بشكل افتراضي، لا يتم أخذ "التكافؤ القانوني" بعين الاعتبار.
Pattern.CASE_INSENSITIVE(?i)
افتراضيًا، تعمل المطابقة غير الحساسة لحالة الأحرف فقط مع مجموعة أحرف US-ASCII. تؤدي هذه العلامة إلى مطابقة التعبيرات بغض النظر عن حالة الأحرف. لإجراء مطابقة لا لبس فيها لأحرف Unicode، ما عليك سوى دمج UNICODE_CASE مع هذه العلامة.
نمط.التعليقات(?x)
في هذا الوضع، سيتم تجاهل أحرف المسافات في تعبيرات Java العادية عند المطابقة (ملاحظة المترجم: لا تشير إلى "//s" في التعبير، ولكنها تشير إلى المسافات وعلامات التبويب وأحرف الإرجاع وما إلى ذلك في التعبير.) . تبدأ التعليقات بـ # وتستمر حتى نهاية السطر. يمكن تمكين وضع خط Unix عبر علامة مضمنة.
نمط.DOTAL(؟ق)
في هذا الوضع، يمكن أن يتطابق التعبير '.' مع أي حرف، بما في ذلك نهاية السطر. بشكل افتراضي، لا يتطابق التعبير '.' مع نهايات الأسطر.
نمط.متعدد الخطوط(؟م)
في هذا الوضع، يطابق '^' و'$' بداية السطر ونهايته على التوالي. بالإضافة إلى ذلك، لا يزال "^" يطابق بداية السلسلة، كما يتطابق "$" أيضًا مع نهاية السلسلة. افتراضيًا، يتطابق هذان التعبيران فقط مع بداية السلسلة ونهايتها.
Pattern.UNICODE_CASE(?u)
في هذا الوضع، إذا قمت أيضًا بتمكين علامة CASE_INSENSITIVE، فستطابق أحرف Unicode بشكل غير حساس لحالة الأحرف. افتراضيًا، تعمل المطابقة غير الحساسة لحالة الأحرف فقط مع مجموعة أحرف US-ASCII.
Pattern.UNIX_LINES(?d)
في هذا الوضع، يعتبر '/n' فقط فاصل أسطر، ويتم مطابقته مع '.'، و'^'، و'$'. وبغض النظر عن المفاهيم الغامضة، إليك بعض حالات الاستخدام العادي البسيطة لـ Java:
◆على سبيل المثال، عندما تحتوي السلسلة على التحقق من الصحة