初步學習正則表達式

来源:https://www.cnblogs.com/woods1815/archive/2018/09/06/9602023.html
-Advertisement-
Play Games

目錄 分隔符 字元類和類型 重覆 子表達式 子表達式計數 定位到字元串的開始或末尾 分支 匹配特殊字元 特殊字元含義 分隔符 正則表達式必須包含在一對分隔符中。可以選擇任何非字母,數字,"\" 或空格的字元作為分隔符。字元串的開始和結束必須有匹配的分隔符。 最常用的分隔符是"/"。 如匹配"shop ...


 

目錄

 

分隔符

字元類和類型

重覆

子表達式

子表達式計數

定位到字元串的開始或末尾

分支

匹配特殊字元

特殊字元含義


分隔符

  • 正則表達式必須包含在一對分隔符中。可以選擇任何非字母,數字,"\" 或空格的字元作為分隔符。字元串的開始和結束必須有匹配的分隔符。
  • 最常用的分隔符是"/"。 如匹配"shop": /shop/
  • 如果要在正則表達式中匹配字元"/",需要使用"\"來轉義"/"。如匹配"http://": /http:\/\//

字元類和類型

  • 可以用字元"."作為匹配除換行符(\n)之外任何字元的通配符。如:/.at/ 可以匹配“cat”,“sat”,“mat”等,通常這種通配符的匹配適用於操作系統的文件名匹配。
  • /[a-z]at/ 表示第一個字元是a到z之間的字元,後面匹配at;任何[ ]中的內容都是一個字元類,也就是說方括弧內的表達式只匹配一個字元。
  • /[a-zA-Z]/ 表示匹配大小寫的任何字元。
  • /[^a-z]/ 用來匹配任何不在a和z之間的字元。當 ^ 符號在 [ ] 中時,表示否的意思。

重覆

  • "*"表示這個模式可以重覆出現0次或多次。
  • "+"表示這個模式可以重覆出現1次或多次。
  •  "?" 表示這個模式可以重覆出現1次或0次。
  • /[[:alnum:]]+/ 表示至少有一個字母字元。

子表達式

  • 通常,可以將一個表達式分隔為幾個子表達式,如:/(very)*large/ 表示very可以重覆出現0次或多次,可以匹配“large”,“very large”,“very very large”等。

子表達式計數

  • { } 中使用數字表達式來指定內容允許重覆的次數。
  • /(very){3}/ 表示very重覆3次
  • /(very){1,3}/ 表示very重覆1~3次
  • /(very){2, }/ 表示最少要重覆2次

定位到字元串的開始或末尾

  • ^ 用於正則表達式的開始,表示子字元串必須出現在被搜索字元串的開始處。
  • $ 用於正則表達式的末尾,表示子字元串必須出現在被搜索字元串的末尾。
  • /^bob/ 表示要在開始處匹配 bob - /com$/ 表示要以com結束

分支

  •  | 在正則表達式中表示模式選擇。
  • /com|edu|net/ 表示匹配com 或edu 或net

匹配特殊字元

  • 如果要匹配一個特殊字元,如“.”,“{”,“$”,就必須在它們前面加一個反斜杠“\”。
  • 如果要匹配一個反斜杠“\”,則必須用兩個反斜杠“\\”來表示。
  • 在php中,必須使用單引號來引用正則表達式模式。使用雙引號引用的正則表達式將帶來一些不必要的複雜性。

特殊字元含義

在PCRE正則表達式中,用於方括弧外面的特殊字元
字元意義字元意義
\ 轉義字元 ) 子模式的結束
^ 在字元串開始匹配 * 重覆0次或更多次
$ 在字元串末尾匹配 + 重覆一次或更多次
. 匹配除換行符\n之外的字元 { 最小/最大量記號的開始
| 選擇分支的開始(或) } 最小/最大量記號的結束
( 子模式的開始 ? 標記一個子模式為可選的
在PCRE正則表達式中,用於方括弧裡面的特殊字元
字元意義
\ 轉義字元
^ 非,僅用在開始位置
- 用於指定字元範

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Vue 實例 創建第一個實例 {{}} 被稱之為插值表達式。可以用來進行文本插值。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-w ...
  • c/c++ 標準庫 vector 標準庫 vector的小例子 test1~test7 c++ include include using namespace std; class A{ public: A(){cout v1; vector v2; / //test2 / vector v3(2) ...
  • 題意 輸入一個整數X,求一個整數N,使得N!恰好大於$X^X$。 Sol 考試的時候只會$O(n)$求$N!$的首碼和啊。 不過最後的結論挺好玩的 $n! \approx \sqrt{2 \pi n} (\frac{n}{e})^n$ 然後就可以$O(1)$算啦 ...
  • python名片管理是我根據視頻自己敲敲的代碼,後續學習會持續更新 代碼 card_main.py card_tools.py ...
  • 集合中線程安全的類有:vector,stack,hashtable,enumeration,除此之外均是非線程安全的類與介面 Collection 是對象集合, Collection 有兩個子介面 List 和 Set, List 可以通過下標 (1,2..) 來取得值,值可以重覆,而 Set 只能 ...
  • 父類的靜態成員初始化>父類的靜態代碼塊>子類的靜態成員初始化>子類的靜態代碼塊>父類的代碼塊>父類的構造方法>子類的代碼塊>子類的構造方法 註意: 1.靜態成員和靜態代碼塊只有在類載入的時候執行一次,再次創建實例時,不再執行,因為只在方法區存在一份,屬於一整個類。 2.上述的是通用的載入順序,如果沒 ...
  • 1 import java.util.Arrays; 2 3 public class ArrayOperator { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 ArrLis... ...
  • 我們都知道HashTable是線程安全的類,因為使用了Synchronized來鎖整張Hash表來實現線程安全,讓線程獨占; ConcurrentHashMap的鎖分離技術就是用多個鎖來控制對Hash表的不同部分進行修改,因為我可能只需要對一小塊部分進行操作,而如果鎖整張表開銷太大了,其內部實現就是 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...