| 符號 | 含義 |
|---|---|
| . | 任意字符(除換行符) |
| [abc] | 字符類:匹配 a/b/c 任一 |
| [^abc] | 否定字符類 |
| | | 或運算 |
| () | 分組捕獲 |
| ? | 0 或 1 次 |
| * | 0 或多次 |
| + | 1 或多次 |
| {n} | 恰好 n 次 |
| {n,} | 至少 n 次 |
| {n,m} | n 到 m 次 |
| ^ | 行首(多行模式) |
| $ | 行尾(多行模式) |
| \d | 數字 [0-9] |
| \w | 單詞字符 [a-zA-Z0-9_] |
| \s | 空白字符 |
| \b | 單詞邊界 |
\(\d{3}\)\s*\d{3}[- ]?\d{4}\b(\w+)\s+\1\b(反向引用 \1)(?i)pattern 或 Pattern.CASE_INSENSITIVEPattern.compile(regex, flags)pattern.matcher(input)| 類 | 方法 | 說明 |
|---|---|---|
| Pattern | matches(regex, input) | 一次性匹配整串 |
| Pattern | split(input, limit) | 按模式分割字符串 |
| Matcher | find() / find(start) | 查找下一匹配 |
| Matcher | matches() | 整串匹配 |
| Matcher | lookingAt() | 前綴匹配 |
| Matcher | group() / group(int) | 獲取捕獲組 |
| Matcher | start()/end() | 匹配位置 |
| Matcher | replaceAll(repl) / replaceFirst(repl) | 替換 |
| Matcher | appendReplacement(sb, repl) / appendTail(sb) | 增量替換構建 |
| Matcher | reset() / reset(input) | 重置匹配器 |
// 分割
String[] parts = Pattern.compile("!!").split("A!!B!!C", 2); // [A, B!!C]
// 替換所有元音為大寫
Matcher m = Pattern.compile("[aeiou]").matcher(str);
StringBuffer sb = new StringBuffer();
while (m.find()) m.appendReplacement(sb, m.group().toUpperCase());
m.appendTail(sb);
核心接口:PatternCompiler、Pattern、PatternMatcher、Util.substitute()。支持 Perl5 風格語法,功能與 java.util.regex 類似但 API 風格不同。現推薦使用標準庫。
Perl5Substitution sub = new Perl5Substitution("{$1(新內容)}");
String result = Util.substitute(matcher, pattern, sub, input, Util.SUBSTITUTE_ALL);
matches(regex), split(regex), replaceFirst(regex, repl), replaceAll(regex, repl) 內部委託 Pattern/Matcher。
// 簡易驗證:不以 ./@ 開頭、不含非法字符
Pattern p = Pattern.compile("^[^.@][A-Za-z0-9._@~-]+$");
Matcher m = p.matcher(email);
if (!m.matches()) { /* 非法 */ }
java.util.regex 標準庫appendReplacement/appendTailPattern 復用提升性能