Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Character Class \p{javaLowerCase} ใน Java Regex

Character class \p{javaLowerCase} ใช้ match ตัวอักษรพิมพ์เล็ก (lowercase letters) ตรงกับตัวอักษรที่ Character.isLowerCase(char) คืนค่า true

รายละเอียด

  • Match: a-z และตัวอักษรพิมพ์เล็กของ Unicode อื่นๆ (เช่น à, é, ñ, α, г, あ)
  • ไม่ match: ตัวพิมพ์ใหญ่, ตัวเลข, สัญลักษณ์, whitespace
  • เทียบเท่ากับ \p{Ll} (Unicode General Category: Lowercase Letter)

ตัวอย่างที่ 1: นับจำนวนตัวอักษรพิมพ์เล็ก

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

public class RegexExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a string:");
        String input = sc.nextLine();

        // Regex: ตัวอักษรพิมพ์เล็กแต่ละตัว
        String regex = "\\p{javaLowerCase}";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);

        int count = 0;
        while (matcher.find()) {
            count++;
        }
        System.out.println("Number of lower case characters: " + count);
    }
}

Output

Enter a string
This IS A sample TExt
Number of lower case characters: 11

ตัวอย่างที่ 2: ตรวจสอบสตริงที่ประกอบด้วยตัวพิมพ์เล็กเท่านั้น

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

public class Example {
    public static void main(String[] args) {
        // Regex: เริ่มจบด้วยตัวพิมพ์เล็ก 1 ตัวขึ้นไป
        String regex = "^\\p{javaLowerCase}+$";

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter 5 input strings:");
        String[] input = new String[5];
        for (int i = 0; i < 5; i++) {
            input[i] = sc.nextLine();
        }

        Pattern p = Pattern.compile(regex);
        System.out.println("Strings with only lower case characters:");
        for (int i = 0; i < 5; i++) {
            Matcher m = p.matcher(input[i]);
            if (m.matches()) {
                System.out.println(m.group());
            }
        }
    }
}

Output

Enter 5 input strings:
Raju
RAMU
rahman
radha
SUnDar*
Strings with only lower case characters:
rahman
radha

หมายเหตุเพิ่มเติม

  • \p{javaLowerCase} เป็น POSIX-like character class เฉพาะ Java
  • ใช้ Pattern.UNICODE_CHARACTER_CLASS flag เพื่อให้รองรับ Unicode penuh (default ใน Java 7+)
  • สำหรับ ASCII เท่านั้น ใช้ [a-z] จะเร็วกว่า