Kerry 的筆記本
  • Table of contents
  • Kerry的Mac裝機必要
  • ASP.NET Core 教育訓練文件
    • .NET 9 OpenAPI 介紹與教學
    • 目錄
    • ASP.NET Core Authentication系列(一)理解Claim, ClaimsIdentity, ClaimsPrincipal
    • ASP.NET Core Authentication系列(三)Cookie選項
    • ASP.NET Core Authentication系列(二)實現認證、登錄和註銷
    • ASP.NET Core Authentication系列(四)基於Cookie實現多應用間單點登錄(SSO)
    • ASP.NET Core Consul 教學
    • ASP.NET Core Hangfire 排程管理
    • ASP.NET Core KeyCloak 實作
    • ASP.NET Core NLog-依照Environment使用Nlog.Config檔案
    • ASP.NET Core NLog-如何使用 NLog 將 log 寫到檔案
    • ASP.NET Core Nlog-發送訊息到ElasticSearch
    • 目錄
    • ASP.NET Core Quartz.NET 管理介面
    • ASP.NET Core RDLC 報表設計
    • ASP.NET Core SFTP (使用第三方套建 SSH.Net) - 類別庫為案例
    • ASP.NET Core 中使用 HttpReports 進行接口統計,分析, 可視化, 監控,追踪等
    • ASP.NET 使用 MassTransit 與 RabbitMQ,實現事件發佈、訂閱
    • Asp.Net Core 分散式Session – 使用 Redis
    • ASP.NET Core 前台會員修改個人資料
    • ASP.NET Core 前台會員忘記密碼與重設密碼
    • ASP.NET Core 前台會員登入
    • ASP.NET Core 前台會員註冊
    • ASP.NET Core 呼叫 API 發生 CORS 錯誤
    • ASP.NET Core 如何套網頁設計樣版
    • ASP.NET Core 客製化Model Validation 預設錯誤訊息
    • ASP.NET Core 後台查詢頁面教學
    • ASP.NET Core 網站生命週期
    • ASP.NET Feature Management 使用說明與教學
    • ASP.NET RulesEngine 介紹
    • ASP.NET WinForms APP 程式安裝檔
    • LinePay 支付完成後返回 LINE 應用而不跳出外部瀏覽器
    • EntityFramework
      • EF Core Migrations 完整教學手冊
      • EntityFramework Core DB Migrations
      • 使用 Entity Framework Core (EF Core) 的 Migrations 功能進行版本控制
    • NET 6
      • .NET 6 Autofac範例
      • .NET 6 Automapper範例
      • .NET 6 BenchmarkDotNet範例
      • .NET 6 Bogus範例
      • .NET 6 Dapper範例
      • .NET 6 Dapper語法說明
      • .NET 6 EFCore範例
      • .NET 6 EFCore語法說明
      • .NET 6 EPPlus圖表範例
      • .NET 6 EPPlus範例
      • .NET 6 Hangfire範例
      • .NET 6 HttpClient單元測試範例
      • .NET 6 MailKit前置作業
      • .NET 6 MailKit範例
      • .NET 6 Moq範例
      • .NET 6 NLog範例
      • .NET 6 NLog進階範例
      • .NET 6 Serilog範例
      • .NET 6 Serilog進階範例
      • .NET 6 Telegram.Bot前置作業
      • .NET 6 Telegram.Bot範例
      • .NET 6 Text.Json範例
      • .NET 6 swagger授權
      • .NET 6 swagger範例
      • .NET 6 xUnit範例
      • .NET 6 取得appsettings檔案內容
      • .NET 6 更改回傳Json時為大駝峰命名
      • .NET 6 解決System.Text.Json序列化後會將所有非ASCII轉為Unicode
    • WDMIS
      • CORS
      • FeatureManagement
      • Serilog
      • Spectre.Console
      • 資料模型實戰:從 MSSQL 設計到 .NET 8 WebAPI 實作(以刀具管理為例)
  • Azure
    • 如何在 ASP.NET CORE 5.0 WEB 應用程序中實現 AZURE AD 身份驗證
    • Azure App Configuration 使用教學
    • Azure Blob Storage
    • Azure DevOps 持續整合(CI) + Artifacts
  • CSharp
    • ASP.NET await 與 wait 的差異
    • AutoMapper —— 類別轉換超省力
    • C# 中的 HTTPClient — 入門指南
    • C# 正則表達式:從零到英雄指南
    • C# 集合, List<> 取交集、差集、聯集的方法
    • C#單元測試教學
    • CORS 介紹與設定方式
    • CSharp Coding Conventions
    • Using jQuery Unobtrusive AJAX in ASP.NET Core Razor Pages
    • 深入Dapper.NET源碼
    • 菜雞與物件導向
      • 菜雞與物件導向 (0): 前言
      • 菜雞與物件導向 (1): 類別、物件
      • 菜雞與物件導向 (10): 單一職責原則
      • 菜雞與物件導向 (11): 開放封閉原則
      • 菜雞與物件導向 (12): 里氏替換原則
      • 菜雞與物件導向 (13): 介面隔離原則
      • 菜雞與物件導向 (14): 依賴反轉原則
      • 菜雞與物件導向 (15): 最少知識原則
      • 菜雞與物件導向 (2): 建構式、多載
      • 菜雞與物件導向 (3): 封裝
      • 菜雞與物件導向 (4): 繼承
      • 菜雞與物件導向 (5): 多型
      • 菜雞與物件導向 (6): 抽象、覆寫
      • 菜雞與物件導向 (7): 介面
      • 菜雞與物件導向 (8): 內聚、耦合
      • 菜雞與物件導向 (9): SOLID
      • 菜雞與物件導向 (Ex1): 小結
  • DBeaver
    • 如何強制讓 DBeaver 在 Mac 上使用英文介面
  • DesignPattern
    • OAuth
    • Repository 模式 (Repository Pattern)
    • Single Sign On 實作方式介紹 (CAS)
    • 【SOP製作教學】新手適用,SOP範例、流程圖、製作流程全公開!
    • 【SOP製作教學】流程圖教學、重點範例、BPMN符號介紹!
    • 【SOP製作教學】流程圖符號整理、BPMN2.0進階符號教學!
    • 多奇數位 C# 程式碼撰寫規範 (C# Coding Guideline)
    • 軟體分層設計模式 (Software Layered Architecture Pattern)
    • 開源程式碼檢測平台 SonarQube
    • 菜雞新訓記
      • 菜雞新訓記 (0): 前言
      • 菜雞新訓記 (1): 使用 Git 來進行版本控制吧
      • 菜雞新訓記 (2): 認識 Api & 使用 .net Core 來建立簡單的 Web Api 服務吧
      • 菜雞新訓記 (3): 使用 Dapper 來連線到資料庫 CRUD 吧
      • 菜雞新訓記 (4): 使用 Swagger 來自動產生可互動的 API 文件吧
      • 菜雞新訓記 (5): 使用 三層式架構 來切分服務的關注點和職責吧
      • 菜雞新訓記 (6): 使用 依賴注入 (Dependency Injection) 來解除強耦合吧
      • 菜雞新訓記 (7): 使用 Fluent Validation 來驗證參數吧
  • DevOps
    • Repository 模式 (Repository Pattern)
    • pipeline工具研究
    • 單例模式 (Singleton Pattern)
    • 單元測試
    • 軟體分層設計模式 (Software Layered Architecture Pattern)
    • 雙重檢查鎖定模式 (Double-Checked Locking Pattern)
  • Docker
    • Docker 中部署 .NET 8 Web App 並支援 HTTPS
    • Docker指令大全
    • 第七章 安裝Nomad
    • Docker - 第三章 | 安裝 MSSQL
    • Docker - 第九章 | 安裝 datalust seq
    • 第二章 docker-compose 教學
    • Docker - 第五章 | 安裝 Redis
    • 第八章 安裝SonarQube
    • Docker - 第六章 | 安裝RabbitMQ
    • 第十一章 安裝 VtigerCRM
    • 第十二章 安裝KeyCloak
    • Docker - 第十章 | 安裝 Redmine
    • 第四章 安裝MySQL
    • Docker Desktop (含更改 Docker Image 路徑)
  • Git
    • Git Flow 指令大全(完整指令整理) 🚀
    • Git 安裝及配置SSH Key
    • Git 建立到上傳
    • 將現有專案的遠端儲存庫直接更改為新的儲存庫
    • Git 流程規劃
    • Git 語法大全
    • 30 天精通 Git 版本控管
      • 30 天精通 Git 版本控制
        • 第 01 天:认识 Git 版本控制
        • 第 02 天:在 Windows 平台必装的三套 Git 工具
        • 第 03 天:建立仓库
        • 第 04 天:常用的 Git 版本控制指令
        • 第 05 天:了解仓库、工作目录、物件与索引之间的关系
        • 第 06 天:解析 Git 资料结构 - 物件结构
        • 第 07 天:解析 Git 资料结构 - 索引结构
        • 第 08 天:关于分支的基本观念与使用方式
        • 第 09 天:比对文件与版本差异
        • 第 10 天:认识 Git 物件的绝对名称
        • 第 11 天:认识 Git 物件的一般参照与符号参照
        • 第 12 天:认识 Git 物件的相对名称
        • 第 13 天:暂存工作目录与索引的变更状态
        • 第 14 天: Git for Windows 选项设定
        • 第 15 天:标签 - 标记版本控制过程中的重要事件
        • 第 16 天:善用版本日志 git reflog 追踪变更轨迹
        • 第 17 天:关于合并的基本观念与使用方式
        • 第 18 天:修正 commit 过的版本历史记录 Part 1
        • 第 19 天:设定 .gitignore 忽略清单
        • 第 20 天:修正 commit 过的版本历史记录 Part 2
        • 第 21 天:修正 commit 过的版本历史记录 Part 3
        • 第 22 天:修正 commit 过的版本历史记录 Part 4 (Rebase)
        • 第 23 天:修正 commit 过的版本历史记录 Part 5
        • 第 24 天:使用 GitHub 远端仓库 - 入门篇
        • 第 25 天:使用 GitHub 远端仓库 - 观念篇
        • 第 26 天:多人在同一个远端仓库中进行版控
        • 第 27 天:通过分支在同一个远端仓库中进行版控
        • 第 28 天:了解 GitHub 的 fork 与 pull request 版控流程
        • 第 29 天:如何将 Subversion 项目汇入到 Git 仓库
        • 第 30 天:分享工作中几个好用的 Git 操作技巧
      • zh-tw
        • 第 01 天:認識 Git 版本控管
        • 第 02 天:在 Windows 平台必裝的三套 Git 工具
        • 第 03 天:建立儲存庫
        • 第 04 天:常用的 Git 版本控管指令
        • 第 05 天:了解儲存庫、工作目錄、物件與索引之間的關係
        • 第 06 天:解析 Git 資料結構 - 物件結構
        • 第 07 天:解析 Git 資料結構 - 索引結構
        • 第 08 天:關於分支的基本觀念與使用方式
        • 第 09 天:比對檔案與版本差異
        • 第 10 天:認識 Git 物件的絕對名稱
        • 第 11 天:認識 Git 物件的一般參照與符號參照
        • 第 12 天:認識 Git 物件的相對名稱
        • 第 13 天:暫存工作目錄與索引的變更狀態
        • 第 14 天: Git for Windows 選項設定
        • 第 15 天:標籤 - 標記版本控制過程中的重要事件
        • 第 16 天:善用版本日誌 git reflog 追蹤變更軌跡
        • 第 17 天:關於合併的基本觀念與使用方式
        • 第 18 天:修正 commit 過的版本歷史紀錄 Part 1
        • 第 19 天:設定 .gitignore 忽略清單
        • 第 20 天:修正 commit 過的版本歷史紀錄 Part 2
        • 第 21 天:修正 commit 過的版本歷史紀錄 Part 3
        • 第 22 天:修正 commit 過的版本歷史紀錄 Part 4 (Rebase)
        • 第 23 天:修正 commit 過的版本歷史紀錄 Part 5
        • 第 24 天:使用 GitHub 遠端儲存庫 - 入門篇
        • 第 25 天:使用 GitHub 遠端儲存庫 - 觀念篇
        • 第 26 天:多人在同一個遠端儲存庫中進行版控
        • 第 27 天:透過分支在同一個遠端儲存庫中進行版控
        • 第 28 天:了解 GitHub 的 fork 與 pull request 版控流程
        • 第 29 天:如何將 Subversion 專案匯入到 Git 儲存庫
        • 第 30 天:分享工作中幾個好用的 Git 操作技巧
  • Hands-On Labs - LineBotSDK 實作手札 (C#, .net core)
    • 00. 如何申請LINE Bot
    • CLI
      • 使用CLI來發送新的Channel Access Token(LINE Bot)
      • 使用CLI免費發送LINE Notify通知
    • basic
      • 如何發送LINE訊息(Push Message)
      • 如何發送LINE Template Messages
      • 如何發送ImageMap訊息
      • 如何發送Flex Message
      • 如何在訊息後面加上QuickReply快捷選項
    • liff
      • Lab 21: 建立第一個LIFF應用
    • webhook
      • 如何建立可Echo的基本LINE Bot
      • 如何在WebHook中取得用戶個人資訊(名稱、頭像、狀態)
      • 如何在WebHook中取得用戶上傳的圖片(Bytes)
  • Markdown
    • Markdown Cheatsheet 中文版
    • Markdown語法大全
    • 使用HackMD建立書本目錄
    • 使用HackMD建立簡報
  • SAP ABAP
    • ABAP開發環境和總體介紹
    • SAP MM模塊常用表總結
    • SAP QM數據庫表清單
    • SAP欄位與表的對應關係
  • SQL Server
    • [SQL SERVER] Like in
    • SQL Server 中,移除資料庫中所有的關聯限制
    • SQL Server 刪除資料庫中所有資料表
    • SQL Server View、Function 及 Stored Procedure 定義之快速備份
    • SSMS v18 清除登入畫面中,下拉選單歷史紀錄
    • [MS SQL]如何透過Database Mail進行郵件發送
    • [SQL SERVER]撰寫Stored Procedure小細節
    • 使用 Data Migration Assistant 移轉 SQL Server 資料庫與帳戶
    • 使用SSIS創建同步資料庫數據任務
  • Tools
    • 免費 FTP 伺服器 FileZilla Server 安裝教學 (新版設定)
  • VisualStudio
    • .NET CLI 指令碼介紹
    • Visual Studio 使用 Git 版本控制
    • 使用 Visual Studio 2022 可透過 .editorconfig 鎖定文字檔案的儲存編碼格式分享
  • Web API
    • ASP.NET Core 6 Web API 進行 JWT 令牌身份驗證
    • [ASP.NET Core]如何使用SwaggerAPI說明文件
    • ASP.NET Core Web Api實作JWT驗證筆記
    • ECFIT API 範例
    • JWT Token Authentication And Authorizations In .Net Core 6.0 Web API
    • 微服務架構 - 從狀態圖來驅動 API 的設計
  • Windows
    • [C#] 伺服器監控常用語法 (事件檢視器、CPU 硬碟使用率、程式執行狀況)
    • Configure IIS Web Server on Windows Server 2019
    • Log Paser Studio 分析 IIS W3C Log
    • Windows Server 2019 如何安裝 IIS 運行 ASP.NET 專案
    • 如何檢查安裝在 IIS 上的 .NET Core Hosting Bundle 版本
    • [IIS] 如何解決網站第一個請求 Request 特別慢 ?
    • IIS 不停機更版設置
    • SQL Server 2019 Standard 繁體中文標準版安裝
    • WINDOWS共用資料夾的網路認證密碼放在哪?如何清除?
    • 如何設定 ASP.NET CORE 網站應用程式持續執行在 IIS 上
  • 專案管理
    • SSDLC (Secure Software Development Life Cycle)
    • 系統開發原則
    • MIS及專案管理-使用Redmine
      • 第10章 - [日常管理]MIS部門週會工作進度追蹤
      • 第11章 - [日常管理]MIS部門主管月會報告管理
      • 第12章 - [日常管理]機房工作日誌
      • 第13章 - [日常管理]MIS部門耗用工時及工作進度檢討
      • 第14章 - [日常管理]MIS文件知識庫
      • 第15章 - [日常管理]整理及管理分享
      • 第16章 - [異常管理]使用者問題回報系統
      • 第17章 - [異常管理]資安事件及異常紀錄
      • 第18章 - [異常管理]整理及管理分享
      • 第19章 - [變革管理]MIS的專案及專案管理五大階段
      • 第1章 - [MIS及專案管理]中小企業MIS的鳥事
      • 第20章 - [變革管理]MIS的新專案管理:起始階段
      • 第21章 - [變革管理]MIS的新專案管理:規劃階段
      • 第22章 - [變革管理]MIS的新專案管理:執行階段
      • 第23章 - [變革管理]MIS的新專案管理:監控階段
      • 第24章 - [變革管理]MIS的新專案管理:結束階段
      • 第25章 - [變革管理]整理及管理分享
      • 第26章 - [ISMS管理]ISMS平台整體規劃
      • 第27章 - [ISMS管理]ISMS文管中心
      • 第28章 - [ISMS管理]ISMS表單紀錄的管理
      • 第29章 - [ISMS管理]整理及管理分享
      • 第2章 - [MIS及專案管理]專案管理的概念及MIS應用
      • 第30章 - 初心、來時路及感謝:系列文章總結回顧
      • 第3章 - [MIS及專案管理]管理工具的選擇
      • 第4章 - [Redmine]Redmine的安裝及設定
      • 第5章 - [Redmine]Redime系統邏輯說明
      • 第6章 - [Redmine]自行建立及維護表單
      • 第7章 - [Redmine]專案版面的規劃
      • 第8章 - [日常管理]AR管理
      • 第9章 - [日常管理]資訊服務申請
  • 微服務架構
    • DDD + CQRS + MediatR 專案架構
    • 微服務架構 #2, 按照架構,重構系統
    • 淺談微服務與網站架構的發展史
    • API First Workshop 設計概念與實做案例
      • API First #1 架構師觀點 - API First 的開發策略 - 觀念篇
      • API First #2 架構師觀點 - API First 的開發策略 - 設計實做篇
    • 基礎建設 - 建立微服務的執行環境
      • Part #1 微服務基礎建設 - Service Discovery
      • Part #2 微服務基礎建設 - 服務負載的控制
      • Part #3 微服務基礎建設 - 排隊機制設計
      • Part #4 可靠的微服務通訊 - Message Queue Based RPC
      • Part #5 非同步任務的處理機制 - Process Pool
    • 實做基礎技術 API & SDK Design
      • API & SDK Design #1, 資料分頁的處理方式
      • API & SDK Design #2, 設計專屬的 SDK
      • API & SDK Design #3, API 的向前相容機制
      • API & SDK Design #4, API 上線前的準備 - Swagger + Azure API Apps
      • API & SDK Design #5 如何強化微服務的安全性 API Token JWT 的應用
    • 建構微服務開發團隊
      • 架構面試題 #1, 線上交易的正確性
      • 架構面試題 #2, 連續資料的統計方式
      • 架構面試題 #3, RDBMS 處理樹狀結構的技巧
      • 架構面試題 #4 - 抽象化設計;折扣規則的設計機制
    • 架構師觀點 - 轉移到微服務架構的經驗分享
      • Part #1 改變架構的動機
      • Part #2 實際改變的架構案例
    • 案例實作 - IP 查詢服務的開發與設計
      • 容器化的微服務開發 #1 架構與開發範例
      • 容器化的微服務開發 #2 IIS or Self Host
  • 系統評估
    • RPA 與 WebAPI 評估
    • 數位轉型:從現有系統到數位化的未來
    • 數位轉型:從現有系統到數位化的未來
  • 面試
    • CV_黃子豪_2024
    • HR 問題集
    • .NET 工程師 面試問題集
    • 資深工程師 問題集
    • 資深開發人員 / 技術主管
    • 題目
Powered by GitBook
On this page
  • C# 正則表達式:從零到英雄指南
  • 讀完本文你就會明白“^(?=.[az])(?=.[AZ])(?=.).”是什麼意思😎👍
  • C# 正則表達式簡介:為什麼它是文本操作的強大工具
  • 什麼是 C# 正則表達式以及為什麼應該學習它
  • C# 中的正則表達式:簡要概述
  • .NET Regex 的強大功能:終極字符串搜索模式工具
  • C# 中的正則表達式入門:基本構建塊
  • 了解 C# 正則表達式語法
  • 關鍵正則表達式 C# 元素:匹配、捕獲和替換
  • 正則表達式 C# 匹配:C# 中準確匹配的重要性
  • 正則表達式匹配 C# 示例:開始匹配的基本代碼
  • C# 正則表達式模式:構建複雜且高效的模式
  • 通過簡單的正則表達式示例掌握 C# 中的正則表達式 C#
  • 基本 C# 正則表達式示例:用於電子郵件驗證的簡單正則表達式
  • 中級 C# 正則表達式示例:使用正則表達式進行網頁抓取
  • 高級 C# 正則表達式示例:從非結構化文本中提取結構化數據的案例研究
  • C# 正則表達式替換:精確高效地更新文本
  • C# 正則表達式替換的藝術:如何像專業人士一樣替換文本
  • 在 C# 中使用正則表達式替換文本:獲得最佳結果的提示和技巧
  • Regex.Replace C# 示例:實現高級替換規則
  • .NET 正則表達式基本功能:讓您的 C# 正則表達式更強大
  • C# Regex IsMatch:快速檢查字符串是否與模式匹配
  • 使用 C# Regex.Matches:從單個調用中提取多個匹配項
  • 掌握 C# Regex.Replace:提昇文本操作能力
  • 探索其他正則表達式 C# 方法:C# 替換正則表達式、檢查正則表達式等
  • C# 正則表達式備忘單:常見正則表達式任務的便捷參考指南
  • C# 字符串模式要點:每個開發人員都應該了解的構建塊
  • System.Text.RegularExpressions.Regex.IsMatch:快速匹配的首選函數
  • 正則表達式 C# 匹配字符和快捷方式的綜合列表:從簡單到高級
  • 高級 C# 正則表達式:提高效率和性能的技術
  • 優化您的正則表達式 C# 匹配搜索以獲得更快的結果
  • 實現 C# 字符串搜索模式以滿足複雜的正則表達式要求
  • 展望
  • 向後看
  • .NET 中的正則表達式:C# 項目中無縫互操作性的技巧
  • 正則表達式 C# 最佳實踐:開髮乾淨、高效且可讀的代碼
  • 綜合起來:用於實際應用程序的 C# 正則表達式
  • C Sharp 中正則表達式的實際用例
  • 在 ASP.NET 中使用 Regex C# 進行表單驗證和輸入清理
  • 數據處理中的 C# 正則表達式:實時提取和轉換文本
  • 結論:成為 C# 正則表達式大師
  1. CSharp

C# 正則表達式:從零到英雄指南

PreviousC# 中的 HTTPClient — 入門指南NextC# 集合, List<> 取交集、差集、聯集的方法

Last updated 1 year ago

C# 正則表達式:從零到英雄指南

讀完本文你就會明白“^(?=.[az])(?=.[AZ])(?=.).”是什麼意思😎👍

img

C# 正則表達式簡介:為什麼它是文本操作的強大工具

在深入了解正則表達式的神奇世界之前,我們先了解一下為什麼使用 C# Regex 很重要,以及它如何提高開發人員的工作效率。

在本節中,我們將介紹正則表達式的基礎知識、語法和關鍵元素,以幫助您入門。

什麼是 C# 正則表達式以及為什麼應該學習它

C# Regex(或 C# 中的正則表達式)是一個功能強大的工具,允許您通過搜索、匹配和替換文本中的模式來操作文本數據。

它有助於解決大量與文本相關的任務,例如表單驗證、數據提取和文本轉換。

掌握 C# 正則表達式將使您成為更高效的開發人員,並讓您能夠輕鬆處理複雜的文本操作任務。

C# 中的正則表達式:簡要概述

正則表達式是一種用於指定文本數據模式的語言。它就像您熟悉的通配符功能的超級版本,但更強大、更靈活。

在 C# 中,您無需擔心包含任何特殊庫,因為 Regex 是原生支持的。命名System.Text.RegularExpressions空間包含Regex類,該類提供在 C# 中使用正則表達式所需的所有工具。

.NET Regex 的強大功能:終極字符串搜索模式工具

.NET Regex 引擎不僅高效且廣泛使用,而且還支持廣泛的功能集。告別冗長、容易出錯的字符串操作代碼。

掌握 C# Regex 的強大功能將幫助您創建更準確、簡潔且高效的字符串搜索模式,從而使您的應用程序更加可靠和健壯。

C# 中的正則表達式入門:基本構建塊

要在 C# 中有效使用正則表達式,必須了解語法和構建塊。

在本節中,我們將介紹 C# 正則表達式語法的基礎知識、匹配、捕獲和替換文本的關鍵元素,並為您提供一個開始使用匹配模式的示例。

了解 C# 正則表達式語法

正則表達式有自己的語法,一開始可能會令人生畏。但不要害怕!通過練習和一點耐心,您將開始看到這種簡潔而富有表現力的語言的美感。以下是您需要了解的一些語法元素的快速概述:

  • ^: 表示一行的開始。

  • $: 表示一行的結束。

  • .:匹配除換行符之外的任何字符。

  • *:匹配前面的元素0次或多次。

  • +:匹配前面的元素1次或多次。

  • {n}:精確匹配前一個元素出現的 n 次。

  • [abc]:匹配字符a、b或c中的任意一個。

  • (abc):將括號內的表達式分組並將它們視為單個元素。

這只是冰山一角!隨著您在正則表達式之旅中取得進展,您將發現更多高級元素來創建更強大的搜索模式。

關鍵正則表達式 C# 元素:匹配、捕獲和替換

在 C# 中使用正則表達式從三個基本技術開始:匹配、捕獲和替換。匹配涉及查找輸入文本中是否存在模式,而捕獲則超越匹配範圍並提取匹配的文本以進行進一步處理。顧名思義,替換涉及更改匹配的文本並用新內容替換它。

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static void Main(string[] args)
    {
        string input = "alice@example.com, bob@example.com, carol@example.com";
        string pattern = @"([\w]+)@";
        // Matching and Capturing
        MatchCollection matches = Regex.Matches(input, pattern);
        foreach (Match match in matches)
        {
            Console.WriteLine(match.Groups[1].Value); // Extract the captured group (username)
        }
        // Replacing
        string replaced = Regex.Replace(input, pattern, "$1 is at ");
        Console.WriteLine(replaced);
    }
}

此代碼片段演示瞭如何:

  1. 使用正則表達式匹配並捕獲用戶名([\\w]+)@

  2. 在循環中提取捕獲的組(用戶名)

  3. 將電子郵件地址替換為修改後的版本,以便電子郵件地址顯示為“用戶名位於 example.com”

正則表達式 C# 匹配:C# 中準確匹配的重要性

準確匹配是 C# 中正則表達式使用的關鍵。不正確的模式可能會導致應用程序中出現錯誤和問題,因此深入掌握正則表達式模式至關重要。

正則表達式可能非常複雜,但通過練習,您將能夠創建精確、高效且易於理解的模式。花時間測試和完善您的正則表達式模式,因為從長遠來看,這將證明是無價的。

正則表達式匹配 C# 示例:開始匹配的基本代碼

為了讓您在掌握 C# 正則表達式中的匹配方面取得先機,這裡有一個基本示例,演示如何將正則表達式模式與輸入字符串進行匹配:

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static void Main(string[] args)
    {
        string input = "Hooray for Regex! It's a match made in code heaven!";
        string pattern = @"\bmatch\b";
        // Check if the word "match" is in the input string
        bool isMatch = Regex.IsMatch(input, pattern);
        Console.WriteLine(isMatch); // Output: True
    }
}

在此示例中,我們使用該Regex.IsMatch方法檢查輸入字符串中是否存在單詞“match”,然後輸出相應的結果(True/False)。

C# 正則表達式模式:構建複雜且高效的模式

隨著您獲得 C# 正則表達式的經驗,您將熟悉正則表達式模式的無限潛力。

創建複雜而高效的模式需要理解新的語法元素,以及有效嵌套和組合它們的能力。

繼續練習和探索正則表達式資源,以幫助您構建日益複雜和強大的模式。

通過簡單的正則表達式示例掌握 C# 中的正則表達式 C#

為了幫助您在正則表達式之旅中快速取得進展,我們將探討三個示例 - 基礎、中級和高級 - 演示在現實情況下使用 C# 正則表達式。

每個示例都將展示不同的正則表達式概念和技術,幫助您成為真正的正則表達式愛好者。

基本 C# 正則表達式示例:用於電子郵件驗證的簡單正則表達式

電子郵件驗證是開發人員遇到的常見任務。以下示例演示了一個基本的正則表達式模式,用於檢查輸入字符串是否是有效的電子郵件地址:

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static void Main(string[] args)
    {
        string input = "john.doe@example.com";
        string pattern = @"^\S+@\S+\.\S+$";
        // Check if the input is a valid email address
        bool isValidEmail = Regex.IsMatch(input, pattern);
        Console.WriteLine(isValidEmail); // Output: True
    }
}

在此示例中,我們再次使用該Regex.IsMatch方法,但使用更複雜的模式來檢查有效的電子郵件格式。

中級 C# 正則表達式示例:使用正則表達式進行網頁抓取

此中間示例演示如何使用正則表達式從 HTML 文本塊中提取特定信息。考慮以下示例,該示例從 HTML 頁面中的鏈接列表中提取所有 URL:

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static void Main(string[] args)
    {
        string input = @"<a href=""https://www.example.com"">Example 1</a>
                         <a href=""https://www.example2.com"">Example 2</a>
                         <a href=""https://www.example3.com"">Example 3</a>";
        string pattern = @"href=""(https?://\S+?)""";
        // Find and output each URL in the input string
        MatchCollection matches = Regex.Matches(input, pattern);
        foreach (Match match in matches)
        {
            Console.WriteLine(match.Groups[1].Value); // Output: Extracted URL
        }
    }
}

在這裡,我們使用該Regex.Matches方法查找並捕獲<a>輸入字符串中標籤內的所有 URL。然後,提取的 URL 將打印到控制台。

高級 C# 正則表達式示例:從非結構化文本中提取結構化數據的案例研究

在這個高級示例中,我們將從非結構化文本塊中提取結構化數據:比方說,從類似簡歷的文本中獲取姓名、位置和電子郵件。

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static void Main(string[] args)
    {
        string input = @"Name: Jane Smith
                         Location: New York, NY
                         Email: jane.smith@email.com";
        string pattern = @"Name:\s+(?<name>.+)
                           Location:\s+(?<location>.+)
                           Email:\s+(?<email>\S+@\S+\.\S+)";
        RegexOptions options = RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace;
        Match match = Regex.Match(input, pattern, options);
        if (match.Success)
        {
            Console.WriteLine($"Name: {match.Groups["name"].Value}");
            Console.WriteLine($"Location: {match.Groups["location"].Value}");
            Console.WriteLine($"Email: {match.Groups["email"].Value}");
        }
    }
}

(?<name>...)在此示例中,採用命名捕獲組(使用)來更輕鬆地提取所需信息。

此外,RegexOptions.Multiline和RegexOptions.IgnorePatternWhitespace選項分別用於允許多行匹配並忽略模式中的空格。

C# 正則表達式替換:精確高效地更新文本

高效的文本操作不僅僅涉及查找和捕獲文本。了解如何精確使用 C# 正則表達式替換技術將顯著提高您的文本處理技能。

在本節中,我們將探索 C# 中的正則表達式替換藝術,並深入研究獲得最佳結果的提示和技巧。

C# 正則表達式替換的藝術:如何像專業人士一樣替換文本

正則表達式替換允許我們根據正則表達式模式修改輸入文本,用新內容替換匹配的文本。這在清理或轉換數據時特別有用。

正則表達式替換提供的強大功能和靈活性將使您立即成為文本操作大師!

在 C# 中使用正則表達式替換文本:獲得最佳結果的提示和技巧

以下是在 C# 中使用正則表達式替換來實現最佳結果的一些提示和技巧:

  1. (?:...)當不需要捕獲匹配的文本時,使用非捕獲組。它使正則表達式模式更加高效和可讀。

  2. 使用 regex 替換 lambda 表達式來進行更複雜的替換。

  3. 保持正則表達式模式簡潔易讀,以便於維護。

Regex.Replace C# 示例:實現高級替換規則

假設您有一個包含格式為“yyyy-MM-dd”的日期的字符串,並且需要將它們替換為格式“dd-MM-yyyy”:

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static void Main(string[] args)
    {
        string input = "I was born on 2001-05-15 and started my job on 2020-01-01.";
        string pattern = @"(\d{4})-(\d{2})-(\d{2})";
        string replacement = "$3-$2-$1";
        // Replace dates with the new format
        string output = Regex.Replace(input, pattern, replacement);
        Console.WriteLine(output); // Output: I was born on 15-05-2001 and started my job on 01-01-2020.
    }
}

在此示例中,我們使用捕獲組創建替換模板,該模板使用所需的模式重新格式化日期字符串。

.NET 正則表達式基本功能:讓您的 C# 正則表達式更強大

要真正利用 C# 中正則表達式的強大功能,必須掌握內置的 .NET Regex 函數。Regex.IsMatch在本節中,我們將介紹、Regex.Matches、Regex.Replace等關鍵功能,為您提供輕鬆處理最複雜的文本操作任務所需的技能。

C# Regex IsMatch:快速檢查字符串是否與模式匹配

該Regex.IsMatch方法允許您快速檢查輸入字符串是否與正則表達式模式匹配,並返回bool表示結果的值。

此函數對於簡單的驗證和模式檢查特別有用。下面的示例確保密碼至少包含一個大寫字母、一個小寫字母、一個數字,並且長度在 8 到 14 個字符之間:

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static void Main(string[] args)
    {
        string input = "Abc12345";
        string pattern = @"^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{8,14}$";
        // Check if the input is a valid password
        bool isValidPassword = Regex.IsMatch(input, pattern);
        Console.WriteLine(isValidPassword); // Output: True
    }
}

在此示例中,該Regex.IsMatch方法檢查輸入字符串是否與模式中指定的密碼要求匹配。

使用 C# Regex.Matches:從單個調用中提取多個匹配項

該Regex.Matches方法使您能夠從單個輸入字符串中提取多個匹配項,並返回MatchCollection包含找到的所有匹配項的對象。

這種方法對於從大型非結構化文本中提取數據非常有用。下面的示例查找字符串中包含 4 個或更多字符的所有單詞:

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static void Main(string[] args)
    {
        string input = "Regex can do wonders for your text manipulation skills!";
        string pattern = @"\b\w{4,}\b";
        // Find and output all words containing 4 or more characters
        MatchCollection matches = Regex.Matches(input, pattern);
        foreach (Match match in matches)
        {
            Console.WriteLine(match.Value);
        }
    }
}

在此示例中,該Regex.Matches方法查找並提取輸入字符串中與指定模式匹配的所有單詞。

掌握 C# Regex.Replace:提昇文本操作能力

正如我們在前面的示例中所看到的,該Regex.Replace方法通過用新內容替換輸入字符串的匹配部分,提供了一種操作文本的強大方法。

要真正掌握 C# 中的文本操作,您需要深入了解Regex.Replace,包括如何將其與捕獲組、反向引用和 Lambda 表達式結合使用,以增強功能和靈活性。

探索其他正則表達式 C# 方法:C# 替換正則表達式、檢查正則表達式等

除了我們討論過的核心 C# Regex 方法之外,請務必探索類中可用的其他有用方法Regex,例如Regex.Split、Regex.Escape和Regex.Unescape。

這些方法中的每一種都提供了附加功能,可以幫助您簡化文本處理任務並創建更高級、更高效的應用程序。

C# 正則表達式備忘單:常見正則表達式任務的便捷參考指南

為了幫助您鞏固對 C# 中正則表達式的理解,這裡有一個備忘單,其中包含每個 C# 開發人員都應該了解的大量基本正則表達式語法元素、函數和模式。

C# 字符串模式要點:每個開發人員都應該了解的構建塊

  • ^: 一行的開頭

  • $: 一行結束

  • .: 除換行符外的任何字符

  • *: 0 個或多個前面的字符

  • {n,m}:至少n個,最多m個前一個字符

  • (abc):捕獲組

  • [abc]:字符集(匹配a、b或c)

  • [^abc]:否定字符集(匹配不在a、b或c中的字符)

  • |: 交替(匹配 兩側的表達式之一|)

這些只是您將遇到的正則表達式語法元素的幾個示例。正則表達式語法元素的完整列表可以在官方 .NET 文檔中找到。

System.Text.RegularExpressions.Regex.IsMatch:快速匹配的首選函數

如前所述,該Regex.IsMatch方法是檢查輸入字符串是否與正則表達式模式匹配的快速且簡單的方法。將此方法添加到您的工具箱中,可以輕鬆處理簡單的模式檢查和驗證。

正則表達式 C# 匹配字符和快捷方式的綜合列表:從簡單到高級

  • \d: 一個數字

  • \D: 非數字字符

  • \w:單詞字符(字母、數字或下劃線)

  • \W: 非單詞字符

  • \s:空白字符(空格、製表符、換行符等)

  • \S: 非空白字符

  • (?=...):正向前瞻

  • (?!...):負前瞻

  • (?<=...):積極的向後看

  • (?<!...): 負向後看

  • (?:...):非捕獲組

  • \1、\2等:向後引用先前捕獲的組

此擴展列表提供了對可用的各種正則表達式元素的更全面的了解。通過探索正則表達式教程、指南和文檔不斷擴展您的知識,以更好地理解和在項目中利用 C# 正則表達式模式。

高級 C# 正則表達式:提高效率和性能的技術

隨著您越來越熟練地使用 C# 正則表達式,您將希望探索可以提高效率和性能的高級技術。

在本節中,我們將討論如何優化正則表達式模式以獲得更快的結果、實現複雜的正則表達式要求以及採用 C# 最佳實踐來獲得乾淨有效的代碼。

優化您的正則表達式 C# 匹配搜索以獲得更快的結果

高效的正則表達式模式可以產生更好的性能。以下是一些通過實際示例優化正則表達式搜索的技巧:

  1. 盡可能使用非捕獲組。 不要使用(expression)which 捕獲表達式,而是使用(?:expression)which 匹配但不會捕獲表達式。

//Capturing group example
string input = "The color is red.";
Match match = Regex.Match(input, "The color is (red|blue)");
Console.WriteLine(match.Groups[1].Value); // Output: red

//Non-capturing group example
input = "The color is red.";
match = Regex.Match(input, "The color is (?:red|blue)");
Console.WriteLine(match.Groups[0].Value); // Output: The color is red.
  1. 避免過於復雜或嵌套的模式。 簡化您的正則表達式模式,並根據需要將其分成更小的模式。重構代碼以使用多個簡單模式而不是單個複雜模式。

  2. 利用錨點(^和$)來限制搜索範圍。 錨點可以幫助加快正則表達式匹配速度,因為它們限制了搜索範圍,從而減少了處理時間。

string input = "apple\nbanana\ngrape\norange";
string pattern = "^grape$";
Match match = Regex.Match(input, pattern, RegexOptions.Multiline);
Console.WriteLine(match.Value); // Output: grape

實現 C# 字符串搜索模式以滿足複雜的正則表達式要求

實現複雜的正則表達式要求通常涉及使用高級正則表達式功能,例如前向斷言和後向斷言。這些允許您創建考慮周圍上下文的模式,而無需實際捕獲文本。

了解和利用這些高級功能將使您能夠創建更強大、更精確的搜索模式。

展望

正向先行(?=...)可確保先行內的模式出現在字符串中,但不會消耗字符串中的字符。

string input = "I want to buy a car and a bike";
string pattern = @"\ba(?:\w+)(?= a\b)";
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
    Console.WriteLine(match.Value);
}
// Output:
// car

負先行(?!...)確保先行內的模式不存在於字符串中,但不會消耗字符串中的字符。

input = "I want to buy a car and a bike";
pattern = @"\ba(\w+)(?! a\b)";
matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
    Console.WriteLine(match.Value);
}
// Output:
// bike

向後看

正向lookbehind(?<=...)可確保lookbehind 內的模式出現在字符串中,但不會消耗字符串中的字符。

input = "100 kg of apples and 200 kg of oranges";
pattern = @"(?<=\d{3}\s)kg";
matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
    Console.WriteLine(match.Value);
}
// Output:
// kg

負lookbehind(?<!...)可確保lookbehind 內的模式不存在於字符串中,但不會消耗字符串中的字符。

string input = "123/apple 456/orange";
string pattern = @"(?<!123/)apple";
Match match = Regex.Match(input, pattern);
Console.WriteLine(match.Value);
// Output: (no match found)

.NET 中的正則表達式:C# 項目中無縫互操作性的技巧

C# 中的正則表達式是 .NET 庫的一部分,這意味著它們可以輕鬆地與其他 .NET 語言和工具進行互操作。

確保您熟悉 .NET 正則表達式語法,並在多語言環境中工作時遵循既定的最佳實踐。這將幫助您保持一致的代碼,減少潛在的錯誤,並確保整個項目的無縫正則表達式體驗。

例如,與 VB.NET 或 F# 開發人員合作時,共享您的正則表達式模式並確保每個人都了解項目中使用的模式的語法和結構。

使用正則表達式模式的既定命名約定,並在所有語言中保持模式相似,以便來自不同語言背景的開發人員更容易閱讀和理解它們。

正則表達式 C# 最佳實踐:開髮乾淨、高效且可讀的代碼

花時間開髮乾淨、高效且可讀的正則表達式代碼。保持您的模式簡潔且可維護,以確保長期穩定性和效率。

包括複雜正則表達式的註釋和解釋,以指導其他開發人員,使他們更容易理解和維護代碼。

與所有編程場景一樣,遵循最佳實踐是使用 C# 正則表達式實現獲得最佳結果的關鍵。

例如:

string pattern =
    @"^                    # Start of the line
    (?<header>[\w\s]+)    # Header (word and whitespace characters)
    :                     # Literal colon separator
    (?<content>.+?)       # Content (any non-newline chars)
    $                     # End of the line";

此模式演示瞭如何使用註釋來解釋正則表達式模式的每個部分,使其他人(以及未來的您)更容易理解正則表達式模式的目的和行為。

綜合起來:用於實際應用程序的 C# 正則表達式

正如您在本指南中所看到的,C# 正則表達式是一種多功能且強大的工具,用於在各種實際應用程序中進行文本操作。讓我們通過示例回顧一下 C# 中正則表達式的一些實際用例,以提供進一步的見解。

C Sharp 中正則表達式的實際用例

以下是一些可以從 C# 中正則表達式的強大功能中受益的示例應用程序:

  • Web 應用程序的表單驗證和輸入清理:

正則表達式可用於驗證 Web 應用程序中的表單字段,例如檢查電子郵件地址是否遵循正確的格式。

string emailPattern = @"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b";
bool isValidEmail = Regex.IsMatch("john.doe@example.com", emailPattern, RegexOptions.IgnoreCase);
Console.WriteLine(isValidEmail); // Output: True
  • 提取和轉換數據以進行數據分析或報告:

例如,正則表達式可用於解析日誌文件,並提取有用的信息,如錯誤消息、時間戳和用戶數據。

string logText = "2021-08-01 12:00:00 - ERROR - Could not connect to database.";
string regexPattern = @"\bERROR\b\s-\s(.+)";
Match match = Regex.Match(logText, regexPattern);
Console.WriteLine(match.Groups[1].Value); // Output: Could not connect to database.
  • 網頁抓取和數據挖掘:

正則表達式可用於從網頁中提取內容,例如獲取網頁上的所有鏈接。

string htmlText = "<a href=\"https://example1.com\">Example 1</a> <a href=\"https://example2.com\">Example 2</a>";
string linkPattern = @"<a\s+href=""([^""]+)""[^>]*>";
MatchCollection matches = Regex.Matches(htmlText, linkPattern);
foreach (Match match in matches)
{
    Console.WriteLine(match.Groups[1].Value);
}
  • 文本編輯器或 IDE 中的搜索功能:

正則表達式可用於在大型代碼文件或文本文檔中查找特定模式或字符串,幫助您快速找到所需的信息。

string code = "using System;\nnamespace HelloWorld{class Program{static void Main(string[] args){Console.WriteLine(\"Hello, World!\");}}}";

// Regex pattern to find "Console.WriteLine" method and find all matches
MatchCollection matches = Regex.Matches(code, @"Console\.WriteLine\(");

// Print the number of matches found
Console.WriteLine($"Found {matches.Count} matches.");
  • 日誌文件分析與調試:

通過使用正則表達式模式,您可以解析日誌文件以查找特定的錯誤消息或發生的情況,從而幫助調試過程。

string logContents = "2012-07-12 INFO Success\n2012-07-15 ERROR Failure";
string errorPattern = "^.*ERROR.*$";
MatchCollection errorMatches = Regex.Matches(logContents, errorPattern, RegexOptions.Multiline);
foreach (Match match in errorMatches)
{
    Console.WriteLine(match.Value);
}

在 ASP.NET 中使用 Regex C# 進行表單驗證和輸入清理

正則表達式在 Web 應用程序中的表單驗證和輸入清理中發揮著至關重要的作用。掌握 C# 中的正則表達式可讓您創建強大且安全的 ASP.NET 應用程序,從而有效驗證用戶輸入、確保數據完整性並防止潛在的安全問題。例如,您可以將正則表達式與驗證器控件(例如 )結合使用RegularExpressionValidator,以匹配用戶提交的輸入中的特定模式。

<asp:TextBox ID="emailTextBox" runat="server" />
<asp:RegularExpressionValidator ID="emailValidator" runat="server" 
    ControlToValidate="emailTextBox"
    ErrorMessage="Invalid email format."
    ValidationExpression="\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b">
</asp:RegularExpressionValidator>

數據處理中的 C# 正則表達式:實時提取和轉換文本

在數據處理方面,正則表達式是一個遊戲規則改變者。它使您能夠輕鬆地實時提取和轉換文本數據,簡化複雜的數據處理任務並提高應用程序的整體效率。

例如,您可能需要解析數千行文本文件並提取特定信息,例如文本中的所有電子郵件地址:

string input = "Contact Alice at alice@example.com and Bob at bob@example.org";
string emailPattern = @"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b";
MatchCollection emailMatches = Regex.Matches(input, emailPattern, RegexOptions.IgnoreCase);

foreach (Match match in emailMatches)
{
    Console.WriteLine(match.Value);
}
// Output:
// alice@example.com
// bob@example.org

另一個例子是轉換格式化文本,例如從給定文本中刪除所有 HTML 標籤,同時保留內容:

string htmlText = "<h1>Hello, world!</h1><p>This is <strong>bold</strong> text.</p>";
string htmlTagPattern = @"</?[^>]+>";
string plainText = Regex.Replace(htmlText, htmlTagPattern, string.Empty);

Console.WriteLine(plainText);
// Output:
// Hello, world!This is bold text.

當您深入研究 C# 正則表達式的世界時,您會發現無數的應用程序領域可以受益於正則表達式提供的強大功能和靈活性。

通過掌握正則表達式,您可以直接處理複雜的文本操作任務,增強應用程序的性能和功能,並最終成為更高效、更熟練的 C# 開發人員。

結論:成為 C# 正則表達式大師

在本指南中,您已經探索了 C# 正則表達式的世界,從基本語法元素到高級技術。一旦您掌握了 C# 中的正則表達式,可能性幾乎是無限的。

繼續磨練您的正則表達式技能並將其應用到實際應用程序中,以充分利用 C# 正則表達式提供的強大功能和靈活性。

快樂的調整!

例如,假設您有一個電子郵件地址,並且想要從中提取用戶名(@ 符號之前的部分)。下面是一個簡單的 C# 正則表達式示例,演示了三種技術的實際應用:

列表