العمليات التي يمكنها استخدام التعبيرات العادية على السلسلة تستفيد فعليًا من وظائف java.util.regex.Pattern وjava.util.regex.Matcher. عند استدعاء أسلوب matchs() الخاص بالسلسلة، فإنه في الواقع يستدعي الأسلوب الثابت للنمط match(). تُرجع هذه الطريقة قيمة منطقية تشير إلى ما إذا كانت السلسلة تتطابق مع التعبير العادي.
إذا كنت تريد التعامل مع التعبير العادي ككائن يمكن إعادة استخدامه، فيمكنك استخدام طريقة التحويل البرمجي الثابتة للنمط () لتجميعه. ستعيد طريقة التحويل البرمجي () مثيل نمط، والذي يمثل تعبيرًا عاديًا. يمكنك بعد ذلك إعادة استخدام طريقة المطابقة () لمثيل النمط لإرجاع مثيل Matcher، الذي يمثل مثيلًا يطابق التعبير العادي. هناك بعض عمليات البحث في هذه الحالة، تكون الطرق التي تستوفي شروط التعبير العادي متاحة للتشغيل. يوضح المثال 6.11 هذا.
** مثال 6.11UsePatternMatcher.java
import java.util.regex.*;
الطبقة العامة UsePatternMatcher {
public static void main(String[] args) {
سلسلة الهواتف1 =
"رقم هاتف جاستن: 0939-100391n" +
"رقم الهاتف المحمول للأم: 0939-666888n";
نمط النمط = Pattern.compile(".*0939-\d{6}");
Matcher matcher = Pattern.matcher(phones1);
بينما(matcher.find()) {
System.out.println(matcher.group());
}
سلسلة الهواتف 2 =
"رقم الهاتف المحمول لشركة كاتربيلر: 0952-600391n" +
"رقم هاتف بوش المحمول: 0939-550391"؛
matcher = Pattern.matcher(phones2);
بينما(matcher.find()) {
System.out.println(matcher.group());
}
}
}
سيبحث المثال 6.11 عن أرقام تبدأ بـ 0939. بافتراض أن الأرقام تأتي من أكثر من مصدر (مثل الهواتف 1، الهواتف 2)، يمكنك تجميع التعبير العادي وإرجاع كائن النمط، ويمكنك بعد ذلك إعادة استخدام كائن النمط هذا أثناء المقارنة. استخدم matcher() لإرجاع مثيلات Matcher المطابقة. تشير طريقة البحث () إلى ما إذا كانت هناك سلسلة مطابقة، ويمكن لطريقة المجموعة () إرجاع السلسلة المطابقة. نتائج تنفيذ البرنامج هي كما يلي:
رقم هاتف جوستين: 0939-100391
رقم الهاتف المحمول للأم: 0939-666888
رقم الهاتف المحمول لبوش: 0939-550391
دعونا نعيد كتابة المثال 6.9 باستخدام Pattern and Matcher حتى يتمكن البرنامج من إرجاع السلاسل التي تتطابق مع التعبير العادي بدلاً من إرجاع السلاسل التي لا تتطابق.
** مثال 6.12RegularExpressionDemo2.java
import java.util.regex.*;
الطبقة العامة RegularExpressionDemo2 {
public static void main(String[] args) {
نص السلسلة = "abcdebcadxbc"؛
نمط النمط = Pattern.compile(".bc");
Matcher matcher = Pattern.matcher(text);
بينما(matcher.find()) {
System.out.println(matcher.group());
}
System.out.println();
}
}
style='font-family:宋体'>نتائج التنفيذ:
اي بي سي
اي بي سي
xbc
هذه المقالة مأخوذة من مدونة CSDN، يرجى الإشارة إلى المصدر عند إعادة الطباعة: http://blog.csdn.net/wofe912/archive/2009/12/18/5030571.aspx.