java.util.regex正規式的應用:Pattern和Matcher
Regular Expression,中文稱:正規式、正規表示式、正則表示式,
在字串的比對上是無比強大的工具,
在java 1.4之後Regular Expression正式被java所支援,
若你使用Eclipse來開發Java,下面這兩個套件可在 Eclipse中幫助你測試你的Regular Expression。
一般我們常用的字串操作有很多
譬如說檢查字串中是否包含某個字串
這點可以利用contains來達到
也可以利用Regular Expression來比對
除此之外Regular Expression也可以達到更多判別
例如說字串是不是由什麼特定字串開始或結束
而更強大的功能在於能將符合需求的字串濾出
只要掃過一次就能得到所有符合的項目真的非常方便
如果想得到更詳細的介紹請看 Regular Expression 簡介
語法的介紹則可參考 Java Regular Expression的學習筆記 [精華]
以下的程式簡單地示範了幾個常用的method:
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
關鍵字:Regular Expression, Pattern, Matcher, 正規式, 正規表示式, 正則表示式
參考資料:
在字串的比對上是無比強大的工具,
在java 1.4之後Regular Expression正式被java所支援,
若你使用Eclipse來開發Java,下面這兩個套件可在 Eclipse中幫助你測試你的Regular Expression。
而若你需要的是線上的測試工具,可以參考:
譬如說檢查字串中是否包含某個字串
這點可以利用contains來達到
也可以利用Regular Expression來比對
除此之外Regular Expression也可以達到更多判別
例如說字串是不是由什麼特定字串開始或結束
而更強大的功能在於能將符合需求的字串濾出
只要掃過一次就能得到所有符合的項目真的非常方便
如果想得到更詳細的介紹請看 Regular Expression 簡介
語法的介紹則可參考 Java 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
關鍵字:Regular Expression, Pattern, Matcher, 正規式, 正規表示式, 正則表示式
參考資料:
留言
張貼留言