"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يعمل التقاط المجموعات في تعبيرات Java العادية؟

كيف يعمل التقاط المجموعات في تعبيرات Java العادية؟

تم النشر بتاريخ 2024-11-17
تصفح:784

How do Capturing Groups Work in Java Regular Expressions?

فهم مجموعات التقاط Java Regex

في مقتطف التعليمات البرمجية هذا، نستخدم مكتبة التعبير العادي (regex) لـ Java لاستخراج أجزاء من السلسلة. يتم تعريف التعبير العادي كـ "(.

)(\d )(.)"، حيث:

    (.*): يطابق أي عدد من أي أحرف قبل المجموعة التالية .
  • (\d ): يطابق أي عدد من الأرقام بعد المجموعة السابقة.
  • (.*): يطابق أي عدد من أي أحرف بعد المجموعة السابقة. group.

تنفيذ التعبير العاديعندما يتم تنفيذ التعبير العادي مقابل السلسلة "تم وضع هذا الطلب لـ QT3000! حسنًا؟"، فإنه ينتج النتائج التالية :

القيمة التي تم العثور عليها: تم تقديم هذا الطلب لـ QT3000! نعم؟ القيمة التي تم العثور عليها: تم تقديم هذا الطلب لـ QT القيمة التي تم العثور عليها: 3000

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000
فهم محددات الكمية الجشعة

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

استخدام محددات الكمية المترددة

للمطابقة فقط الأحرف الضرورية، يمكننا استخدام محدد كمي متردد، يشار إليه بعلامة استفهام. استبدال "(.)" بـ "(.

؟)" يطابق أقل عدد ممكن من الأحرف، مما يؤدي إلى الإخراج التالي:

القيمة التي تم العثور عليها: تم تقديم هذا الطلب لـ QT3000! نعم؟ القيمة التي تم العثور عليها: تم تقديم هذا الطلب لـ QT القيمة التي تم العثور عليها: 3000

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

تسمح لنا مجموعات الالتقاط باستخراج أجزاء معينة من سلسلة مطابقة لمزيد من الاستخدام. في هذا المثال، يمكننا الوصول إلى القيمة المطابقة لكل مجموعة من خلال طريقة "group()" لكائن "Matcher"، كما هو موضح في مقتطف التعليمات البرمجية أدناه:

Pattern Pattern = Pattern.compile( "(.*?)(\\d )(.*)"); Matcher matcher = Pattern.matcher(line); إذا (matcher.find()) { System.out.println("المجموعة 1:" matcher.group(1)); System.out.println("المجموعة 2:" matcher.group(2)); System.out.println("المجموعة 3:" matcher.group(3));

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3