สนับสนุนโดย

วันเสาร์ที่ 29 ธันวาคม พ.ศ. 2561

การใช้ Regular Expression

ในการเขียนโปรแกรมที่ยากๆ ส่วนมากจะใช้ Regular Expression หรือสัญลักษณ์คัดกรองข้อมูลนั่นเอง อาจจะดูยากหน่อยในช่วงแรก แต่จริงๆ ไม่ยากเกินไป ผู้อ่านสามารถค้นหาข้อมูลการใช้ได้ตามเว็บทั่วไป เพราะโดยหลักแล้ว Regular Expression จะมีแนวทางเหมือนกันทั้งหมด

ลองมาดูโค้ดของ java กันครับ สร้าง package ชื่อว่า regex แล้วสร้างไฟล์ชื่อ RegexTest.java ลงไป



ตัวอย่างโค้ด
package regex;

import java.util.*;
import java.util.regex.*;

public class RegexTest {

    public static void main(String[] args) throws PatternSyntaxException {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter pattern: ");
        String patternString = in.nextLine();

        Pattern pattern = Pattern.compile(patternString);

        while (true) {
            System.out.println("Enter string to match: ");
            String input = in.nextLine();
            if (input == null || input.equals("")) {
                return;
            }
            Matcher matcher = pattern.matcher(input);
            if (matcher.matches()) {
                System.out.println("Match");
                int g = matcher.groupCount();
                if (g > 0) {
                    for (int i = 0; i < input.length(); i++) {
                        // Print any empty groups
                        for (int j = 1; j <= g; j++) {
                            if (i == matcher.start(j) && i == matcher.end(j)) {
                                System.out.print("()");
                            }
                        }
                        // Print ( for non-empty groups starting here
                        for (int j = 1; j <= g; j++) {
                            if (i == matcher.start(j) && i != matcher.end(j)) {
                                System.out.print('(');
                            }
                        }
                        System.out.print(input.charAt(i));
                        // Print ) for non-empty groups ending here
                        for (int j = 1; j <= g; j++) {
                            if (i + 1 != matcher.start(j) && i + 1 == matcher.end(j)) {
                                System.out.print(')');
                            }
                        }
                    }
                    System.out.println();
                }
            } else {
                System.out.println("No match");
            }
        }
    }
}

ผลการทำงาน
Enter pattern:
[+-]?[0-9] // ตรงนี้ให้เราป้อนรูปแบบลงไป

Enter string to match:

ไม่มีความคิดเห็น:

แสดงความคิดเห็น