• 若有個 Java 字串是“ Justin+Monica+Irene”,
想使用 split() 方法依 + 切割
– 使用的規則表示式是 \+
– 要將 \+ 放至 "" 之間時,按照 Java 字串的規定,
必忽略 \+ 的 \ ,所以必須撰寫為 "\\+"
簡介規則表示式
簡介規則表示式
• 想使用 split() 方法依 || 切割,要使用的 規則表示式是 \|\| ,要將 \|\| 放至 "" 之 間時,按照 Java 字串規定必須忽略 \| 的 \
,就必須撰寫為 "\\|\\|"
簡介規則表示式
• 如果有個字串是“ Justin\\Monica\\Irene”,也 就是原始文字是 Justin\Monica\Irene 以 Java 字串表示
• 若想使用 split() 方法依 \ 切割,要使用 的規則表示式是 \\ ,那就得如下撰寫:
簡介規則表示式
• 規則表示式中,多個字元可以歸類在一起,
成為一個字元類( Character class )
• 字元類會比對文字中是否有「任一個」字元 符合字元類中某個字元
• 規則表示式中被放在 [] 中的字元就成為一 個字元類
簡介規則表示式
• 想要依 1 或 2 或 3 切割字串:
簡介規則表示式
簡介規則表示式
• 如果想使用者輸入的手機號碼格式是否為 XXXX-XXXXXXX ,其中 X 為數字,規則 表示式可以使
用 \d\d\d\d-\d\d\d\d\d\d
• 不過更簡單的寫法是 \d{4}-\d{6}
簡介規則表示式
• 看到貪婪量詞時,比對器( Matcher )會把 剩餘文字整個吃掉,再逐步吐出( back-of
f )文字,看看是否符合貪婪量詞後的規則表 示式,如果吐出部份符合,而吃下部份也符 合貪婪量詞就比對成功
• 貪婪量詞會儘可能找出長度最長的符合文字
簡介規則表示式
• 文字 xfooxxxxxxfoo ,使用規則表示 式 .*foo 比對
– 比對器會先吃掉整個 xfooxxxxxxfoo ,再吐出 foo 符合 foo 部份,剩下的 xfooxxxxxx 也符合 .* 部 份
• 得到的符合字串就是整個 xfooxxxxxxfoo
簡介規則表示式
• 如果在貪婪量詞表示法後加上 ? ,將會成為 逐步量詞( Reluctant quantifier )
• 比對器看到逐步量詞時,會一邊吃掉剩餘文 字,一邊看看吃下的文字是否符合規則表示 式
• 逐步量詞會儘可能找出長度最短的符合文字
簡介規則表示式
• 文字 xfooxxxxxxfoo 若用規則表示式 .*?foo 比對
– 比對器在吃掉 xfoo 後發現符合 *?foo ,接著繼 續吃掉 xxxxxxfoo 發現符合
• 得到 xfoo 與 xxxxxxfoo 兩個符合文字
簡介規則表示式
• 如果在貪婪量詞表示法後加上 + ,將會成為 獨吐量詞( Possessive quantifier )
• 比對器看到獨吐量詞時,會先將剩餘文字全 部吃掉,然後看看獨吐量詞部份是否可符合 吃下的文字,如果符合就不會再吐出來了
簡介規則表示式
• 文字 xfooxxxxxxfoo ,若使用規則表示 式 .*+foo 比對
– 比對器會先吃掉整個 xfooxxxxxxfoo ,結果 .*+
就可以符合 xfooxxxxxxfoo 了,所以比對器就不 會再吐出文字
• 因為沒有剩餘文字符合 foo 部份,所以結果 就是沒有任何文字符合
簡介規則表示式
簡介規則表示式
• 可以使用 \b 標出單字邊界,例如 \bdog\b
,這就只會比對出 dog 單字
簡介規則表示式
簡介規則表示式
• 可以使用 () 來將規則表示式分組,除了作 為子規則表示式之外,還可以搭配量詞使用
• 驗證電子郵件格式, @ 後網域名稱可以有數 層,必須是大小寫英文字元或數字,規則表 示式可以寫為 ([a-zA-Z0-9]+\.)+
簡介規則表示式
簡介規則表示式
• 分組回頭參考時,是在 \ 後加上分組計數,
表示參考第幾個分組的比對結果
• \d\d 要求比對兩個數字, (\d\d)\1 的話
,表示要輸入四個數字,輸入的前兩個數字 與後兩個數字必須相同
簡介規則表示式
• [“‘][^”’]* [“‘] 比對單引號或雙引號中 0 或多個字元,但沒有比對兩個都要是單引 號或雙引號
• (["'])[^"']*\1 則比對出前後引號必須 一致