搜尋此網誌

windows常用命令

[ 群組原則 ]
開始 → 執行 → gpedit.msc

[ 惡意軟體移除工具 ]
開始 → 執行 → mrt

[ 機碼 ]
開始 → 執行 → regedit

[ 系統設定公用程式 ]
開始 → 執行 → msconfig

[ 控制client端所有網路設備 ]
開始 → 執行 → cmd → ipconfig
開始 → 執行 → cmd → ipconfig/all

[ 顯示封包經過的路由器的IP位址 ]
開始 → 執行 → cmd → tracert (網址或IP)

2011年9月23日 星期五

正規運算式 Regular Expression

JWorld@TW Java論壇 - Java Regular Expression的學習筆記

Pattern (Java 2 Platform SE 6)

正規運算式 Regular Expression

13-4 正規運算式(Regular Expression)

//範例

以下的程式簡單地示範了幾個常用的method:

package demo.regex;

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

public class Regex {

    public static void main(String[] args) {

        // 測試 testString 中是否包含了 aa
        String testString = "ABCaaabcaac";
        System.out.println("String.contains():\t"+testString.contains("aa"));

        // 和上面目的相同,但運用了 regular expression
        // 而這其實是利用了 Pattern 的靜態方法matches()
        System.out.println("String.matches():\t"+testString.matches(".*aa.*"));
        System.out.println("Pattern.matches():\t"+Pattern.matches(".*aa.*",testString));
        System.out.println();

        // 如果要用相同的 regular expression 測試很多資料
        // 可以使用Pattern的靜態方法compile()來編譯
        // 之後就可以重覆使用這個pattern的matcher()方法來進行字串比對
        String testString2 = "aababcAc";
        Pattern pattern = Pattern.compile(".*aa.*");
        Matcher matcher = pattern.matcher(testString);
        System.out.println("matcher.matches():\t"+matcher.matches());
        matcher = pattern.matcher(testString2);
        System.out.println("matcher.matches():\t"+matcher.matches());
        System.out.println();

        // 另外Matcher中還有很多方法可以使用
        // 除了用 matcher.matches()可以比對字串是不是符合regular expression
        // 也可以利用 matcher.lookingAt()比對字串是不是某個regular expression開頭
        pattern = Pattern.compile("aa");
        matcher = pattern.matcher(testString);
        System.out.println("matcher.matches():\t"+matcher.lookingAt());
        matcher = pattern.matcher(testString2);
        System.out.println("matcher.matches():\t"+matcher.lookingAt());
        System.out.println();

        // 想取出字串中符合的區段則可以運用 matcher
        // 例如想從下面四個號碼找出手機的格式
        // 就可以用 matcher.find()及matcher.group()來取出符合的項目
        String testString3 = "0911-111111,             02-22222222      ,             0922-222222      , 03-33333333";
        pattern = Pattern.compile("\\d{4}-\\d{6}");
        matcher = pattern.matcher(testString3);
        while (matcher.find()) {
            System.out.println("matcher.group():\t"+matcher.group());
        }
    }
}

而輸出的結果如下:
String.contains(): true
String.matches(): true
Pattern.matches(): true

matcher.matches(): true
matcher.matches(): true

matcher.matches(): false
matcher.matches(): true

matcher.group():             0911-111111    
matcher.group():             0922-222222