\t Tab
\n 換行
\r 歸位
\f 換頁
\e 跳脫字元
字元類型:
. 任意字元
[abc] a, b, c中的任意字元 ( 同於 a | b | c)
[^abc] 除了a, b, c中的任意字元
[a-zA-Z] a-z或A-Z的任意字元
[abc[def]] 聯集?
[a-z&&[def]] 交集?
\s 空白型的字元 (空白, 跳格, 換行, 換頁, 歸位)
\S 非空白型的字元
\d 指阿拉伯數字 0到9
\D 非阿拉伯數字
\w 字詞字元 [a-zA-Z_0-0]
\W 非字詞字元
邏輯運算子 :
邊界比對:
^ 檔案起始處
$ 檔案結尾處
\b 字詞的邊界
\B 非字詞邊界
\G 前一相符處之未
數量飾詞:
? 表示一個或無
* 零次或多次
+ 一次或多次
{n} 符合n次
{n,} 至少n次
{n,m} 至少n次但不多於m次
群組:
群組0代表整個表示式
群組1表示第一個被括起來的群組
...
樣式標記:
有用到再貼唄
Matcher物件
matches() 只會比對字串一開始的部份, 並全部符合regex才會成功
lookingAt() 只會比對字串一開始的部份, 只要輸入字串開始部份符合就成功
find() 能找出輸入字串中所有此regex存在的地方
find(int start)
groupCount() 回傳 群組0以外的群組數目
group() 回傳前一次比對動作
start() 回傳前一次比對動作中, 找到群組的開始索引值
end() 回傳前一次比對動作中, 找到群組的最後一個字元索引值加一
方便傳入字串與regex, 測試用
下面code的作者 http://www.mindviewinc.com/TIJ4/CodeInstructions.html
//: strings/TestRegularExpression.java // Allows you to easily try out regular expressions. // {Args: abcabcabcdefabc "abc+" "(abc)+" "(abc){2,}" } import java.util.regex.*; public class TestRegularExpression { public static void main(String[] args) { if (args.length < 2) { System.out.println("Usage:\njava TestRegularExpression " + "characterSequence regularExpression+"); System.exit(0); } System.out.println("Input: \"" + args[0] + "\""); for (String arg : args) { System.out.println("Regular expression: \"" + arg + "\""); Pattern p = Pattern.compile(arg); Matcher m = p.matcher(args[0]); while (m.find()) { System.out.println("Match \"" + m.group() + "\" at positions " + m.start() + "-" + (m.end() - 1)); } } } } /* Output: Input: "abcabcabcdefabc" Regular expression: "abcabcabcdefabc" Match "abcabcabcdefabc" at positions 0-14 Regular expression: "abc+" Match "abc" at positions 0-2 Match "abc" at positions 3-5 Match "abc" at positions 6-8 Match "abc" at positions 12-14 Regular expression: "(abc)+" Match "abcabcabc" at positions 0-8 Match "abc" at positions 12-14 Regular expression: "(abc){2,}" Match "abcabcabc" at positions 0-8 *///:~
沒有留言:
張貼留言