Perl、Python、PHP、JavaScript 早內建正則支持;Java 直到 JDK 1.4 才通過 JSR 引入 java.util.regex,早期可用 Apache Jakarta-ORO 庫。本文匯總主流語言正則核心語法、API 用法與進階模式,供跨語言開發參考。
| 符號 | 含義 | 示例匹配 |
|---|---|---|
. | 任意單字符(除換行) | t.n → tan, ten, tin |
[aeiou] | 字符集合,單字符任一 | t[aeio]n → tan, ten, tin, ton |
| | 或運算 | t(a|e|i|o|oo)n → tan, ten, tin, ton, toon |
* + ? {n,m} | 量詞:0+/1+/0-1/範圍 | \d{3}-\d{2}-\d{4} → SSN 格式 |
^ $ | 行首/行尾(多行模式下) | |
\d \D \w \W \s \S | 預定義字符類 | 數字/非數字/單詞/非單詞/空白/非空白 |
\b \B | 單詞邊界/非邊界 | |
(...) (?:...) | 捕獲組/非捕獲組 | |
(?=...) (?!...) | 正向/負向預查 | Windows(?=95|98|NT) |
java.util.regex)Pattern p = Pattern.compile("\\d{3}-\\d{2}-\\d{4}");
Matcher m = p.matcher(input);
while (m.find()) {
System.out.println(m.group()); // 整個匹配
// m.group(1) 獲取第1組
}
RegExp)var re = /\d{3}-\d{2}-\d{4}/g;
var match;
while (match = re.exec(str)) {
console.log(match[0], match.index);
}
regex.h)regex_t reg; regcomp(®, pattern, REG_EXTENDED);
regmatch_t pm[10];
regexec(®, string, 10, pm, 0);
// pm[0].rm_so .. rm_eo 為整匹配位置
regfree(®);
System.Text.RegularExpressions)Regex r = new Regex(@"\d{3}-\d{2}-\d{4}");
Match m = r.Match(input);
if (m.Success) Console.WriteLine(m.Value);
MatchCollection mc = r.Matches(input); // 所有匹配
foreach (Match mm in mc) { ... }
<(.*)>.*</\1>(反向引用)^\w+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$(https?|ftp)://[^\s/$.?#].[^\s]*(1[0-2]|0?[1-9])[-./](0?[1-9]|[12]\d|3[01])[-./](\d{4})文末附帶可直接保存為 RegExp.htm 的瀏覽器端正則練習器(JavaScript 實現),支持多模式批次測試、捕獲組顯示、單步調試,適合邊學邊練。
.*? 少匹配,防止跨行吞噬。\\\\ → 正則 \\ → 字面 `\`)。(a+)+ 遇不匹配輸入會災難性回溯,改用原子組或佔有優先量詞。u 旗標。