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

C# 正則表達式整理備忘 (5)

     編輯:關於C語言

正則表達式進階:非回溯、前瞻/後顧斷言、十六進制字符範圍

一、回溯與非回溯 (?>...)


string x = "Live for nothing,dIE for something";
Regex r1 = new Regex(@".*thing,");      // 貪婪匹配 → 回溯成功
Regex r2 = new Regex(@"(?>.*)thing,");  // 非回溯 → 匹配失敗

r1:.* 吞掉全字串 → 回溯找到 thing, 匹配成功。
r2:非回溯模式下 .* 吞掉全字串後無法回退,整體匹配失敗。

二、正向前瞻 (?=...) / (?!...)


string x = "1024 used 2048 free";
Regex r1 = new Regex(@"\d{4}(?= used)");   // 匹配 1024 (後面必須是 " used")
Regex r2 = new Regex(@"\d{4}(?! used)");   // 匹配 2048 (後面不能是 " used")

斷言本身不消耗字符,不屬於匹配結果一部分。

三、反向後顧 (?<=...) / (?


string x = "used:1024 free:2048";
Regex r1 = new Regex(@"(?<=used:)\d{4}");  // 匹配 1024 (前面必須是 "used:")
Regex r2 = new Regex(@"(?

四、十六進制字符範圍

  • \xXX:0-255 字符 (如空格 \x20)
  • \uXXXX:任意 Unicode 字符 (如漢字 [\u4e00-\u9fa5])
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved