Java Regex - การบันทึกกลุ่ม

การจับกลุ่มเป็นวิธีการปฏิบัติต่ออักขระหลายตัวเป็นหน่วยเดียว สร้างขึ้นโดยการวางอักขระที่จะจัดกลุ่มภายในชุดวงเล็บ ตัวอย่างเช่นนิพจน์ทั่วไป (สุนัข) สร้างกลุ่มเดียวที่มีตัวอักษร "d" "o" และ "g"

การจับภาพกลุ่มจะมีหมายเลขโดยการนับวงเล็บเปิดจากด้านซ้ายไปทางขวา ในนิพจน์ ((A) (B (C))) ตัวอย่างเช่นมีสี่กลุ่มดังกล่าว -

  • ((A)(B(C)))
  • (A)
  • (B(C))
  • (C)

หากต้องการทราบจำนวนกลุ่มที่มีอยู่ในนิพจน์ให้เรียกใช้เมธอด groupCount บนอ็อบเจ็กต์ตัวจับคู่ เมธอด groupCount ส่งคืนไฟล์int แสดงจำนวนกลุ่มการจับภาพที่มีอยู่ในรูปแบบของตัวจับคู่

นอกจากนี้ยังมีกลุ่มพิเศษกลุ่ม 0 ซึ่งแสดงถึงนิพจน์ทั้งหมดเสมอ กลุ่มนี้ไม่รวมอยู่ในจำนวนทั้งหมดที่รายงานโดย groupCount

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงวิธีการค้นหาสตริงหลักจากสตริงตัวอักษรและตัวเลขที่กำหนด -

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

public class RegexMatches {
   public static void main( String args[] ) {
      // String to be scanned to find the pattern.
      String line = "This order was placed for QT3000! OK?";
      String pattern = "(.*)(\\d+)(.*)";

      // Create a Pattern object
      Pattern r = Pattern.compile(pattern);

      // Now create matcher object.
      Matcher m = r.matcher(line);
      
      if (m.find( )) {
         System.out.println("Found value: " + m.group(0) );
         System.out.println("Found value: " + m.group(1) );
         System.out.println("Found value: " + m.group(2) );
      } else {
         System.out.println("NO MATCH");
      }
   }
}

สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -

เอาต์พุต

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT300
Found value: 0