首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

正則表達式全棧指南:從 Java、JavaScript 到 C/C# 核心 API 與實戰模式

     編輯:DB2 教學

背景

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)

主流語言 API 核心對比

Java (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組
}

JavaScript (RegExp)

var re = /\d{3}-\d{2}-\d{4}/g;
var match;
while (match = re.exec(str)) {
    console.log(match[0], match.index);
}

C (POSIX 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(®);

C# (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) { ... }

進階實戰模式

  • HTML 標籤匹配:<(.*)>.*</\1>(反向引用)
  • 郵箱驗證:^\w+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  • URL 提取:(https?|ftp)://[^\s/$.?#].[^\s]*
  • 日期提取:(1[0-2]|0?[1-9])[-./](0?[1-9]|[12]\d|3[01])[-./](\d{4})

學習工具推薦

文末附帶可直接保存為 RegExp.htm 的瀏覽器端正則練習器(JavaScript 實現),支持多模式批次測試、捕獲組顯示、單步調試,適合邊學邊練。

避坑提醒

  1. 貪婪 vs 非貪婪:.*? 少匹配,防止跨行吞噬。
  2. 轉義陷阱:字符串字面量中雙重轉義(Java \\\\ → 正則 \\ → 字面 `\`)。
  3. 性能陷阱:嵌套量詞 (a+)+ 遇不匹配輸入會災難性回溯,改用原子組或佔有優先量詞。
  4. Unicode 支持:Java/C# 默認 Unicode 感知,JS 需 u 旗標。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved