首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 正則表達式入門(一):常用符號速查表與核心概念圖解

     編輯:Java 相關知識

前言

正則表達式是文本處理的利器,本文整理 Java 正則最常用的符號分類、預定義字符類、邊界匹配器、貪婪量詞,配合圖解與示例,建立快速查閱的知識地圖。

一、字符類

語法說明示例匹配
[abc]簡單類:a 或 b 或 ca, b, c
[^abc]否定類:除 a/b/c 以外任意字符d, 1, @
[a-zA-Z]範圍類:a-z 或 A-Z(含邊界)a, Z, m
[a-d[m-p]]並集:a-d 或 m-p → [a-dm-p]a, c, m, p
[a-z&&[def]]交集:a-z 且 def → d, e, fd, e, f
[a-z&&[^bc]]減去:a-z 扣除 b,c → a, d-za, d, z
[a-z&&[^m-p]]減去:a-z 扣除 m-p → a-l, q-za, l, q

二、預定義字符類

符號等價類說明
.[^\n](預設)任意字符(除換行,DOTALL 模式含換行)
\d[0-9]數字
\D[^0-9]非數字
\s[ \t\n\x0B\f\r]空白字符:空格、製表、換行、垂直製表、換頁、回車
\S[^\s]非空白字符
\w[a-zA-Z_0-9]單詞字符:字母、數字、下劃線
\W[^\w]非單詞字符

三、邊界匹配器

符號含義示例
^行首(MULTILINE 模式下為每行首)^Hello 匹配以 Hello 開頭的行
$行尾(MULTILINE 模式下為每行尾)World$ 匹配以 World 結尾的行
\b單詞邊界(\w 與 \W 交界)\bcat\b 匹配單詞 cat,不匹配 catfish
\B非單詞邊界\Bcat\B 匹配 catfish 中的 cat

四、貪婪量詞

語法含義示例
X?0 或 1 次ab?c 匹配 ac 或 abc
X*0 次或多次(≥0)ab*c 匹配 ac, abc, abbc...
X+1 次或多次(≥1)ab+c 匹配 abc, abbc...
X{n}恰好 n 次\d{3} 匹配 3 位數字
X{n,}至少 n 次\d{2,} 匹配 ≥2 位數字
X{n,m}n 到 m 次(n ≤ m)\d{3,5} 匹配 3~5 位數字
量詞預設為貪婪模式(盡可能多匹配),後加 ? 變為勉強模式(如 *?、+?),後加 + 變為佔有模式(如 *+、不回溯)。

五、常用元字符速查與示例

字符說明示例
.任意字符(除換行)r.t 匹配 rat, rut, r t,不匹配 root
$行尾weasel$ 匹配 "He's a weasel" 結尾
^行首^When in 匹配 "When in the" 開頭
\轉義元字符\$ 匹配 $ 符號,\. 匹配字面點號
|邏輯或him|her 匹配 him 或 her
+≥1 次9+ 匹配 9, 99, 999...
?0 或 1 次ab?c 匹配 ac 或 abc
{i} / {i,j}固定/範圍次數A[0-9]{3} 匹配 A+3位數字;[0-9]{4,6} 匹配 4~6 位數字

六、分組符號辨析:() vs [] vs {}

符號核心作用典型示例
()捕獲分組,供反向引用 \\1、替換 $1、提取 group(1);將子表達式作為整體量化(ab)+ 匹配 abab;(\d{3})-\\1 匹配 123-123
[]字符類,定義單字符可選集合/範圍[a-z] 匹配任意小寫字母
{}量詞,指定前面原子(字符/分組/字符類)重複次數\s{3} 3 個空格;\d{1,3} 1~3 位數字

易混淆對照:

  • (0-9) 匹配字面字符串 "0-9"。
  • [0-9] 匹配任意一個數字字符。
  • [0-9]* 匹配 0~n 個數字(可空)。
  • [0-9]+ 匹配 1~n 個數字(非空)。
  • {1-9} 語法錯誤,正確 {1,9}。
  • [0-9]{0,9} 匹配長度 0~9 的純數字字符串。

七、Pattern 編譯標誌

  • Pattern.CASE_INSENSITIVE ((?i)):忽略大小寫。
  • Pattern.MULTILINE ((?m)):^/$ 匹配每行首尾。
  • Pattern.DOTALL ((?s)):. 匹配含換行符。
  • Pattern.COMMENTS ((?x)):忽略空白與註釋,可寫多行可讀正則。
  • Pattern.UNICODE_CASE ((?u)):Unicode 感知大小寫折疊。

總結

熟記上述符號分類與預定義類,配合量詞與邊界匹配器,即可構建 80% 以上的實用正則。下一步建議實戰:Pattern.compile() 編譯 → matcher() 獲取匹配器 → find()/matches() 執行匹配 → group()/start()/end() 提取信息。後續將推出《四大核心操作實戰》與《進階技巧:零寬斷言、佔有模式、性能優化》敬請期待。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved