Linux之正則表達式

来源:http://www.cnblogs.com/0zcl/archive/2017/05/11/6839045.html
-Advertisement-
Play Games

正則表達式與通配符的區別: 最常應用正則表達式的命令是grep(egrep),sed,awk。 正則表達式和通配符有本質區別,正則表達式用來找:【文件】內容,文本,字元串。一般只有三劍客支持。通配符用來找:文件名。普通命令都支持 正則表達式的分類 POSIX規範將正則表達式的分為了兩種 基本正則表達 ...


 

 

正則表達式與通配符的區別:

  • 最常應用正則表達式的命令是grep(egrep),sed,awk。
  • 正則表達式和通配符有本質區別,正則表達式用來找:【文件】內容,文本,字元串。一般只有三劍客支持。通配符用來找:文件名。普通命令都支持

 

正則表達式的分類

POSIX規範將正則表達式的分為了兩種

  • 基本正則表達式(BRE,basic regular expression
  • 高級功能:擴展正則表達式(ERE,extended regular expression

BRE和ERE的區別僅僅是元字元的不同

  • BRE(基礎正則表達式)只承認的元字元有^$.[]*  其他字元識別為普通字元:\(\)
  • ERE(擴展正則表達式)則添加了(){}?+|等
  • 只有在用反斜杠“\”進行轉義的情況下,字元(){}才會在BRE被當作元字元處理,而BRE中,任何元符號前面加上反斜杠反而會使其被當作普通字元來處理。

 

基礎正則表達式

字元描述
^ ^word: 搜索以word開頭的內容
$ word$: 搜索以word結尾的內容
^$ 表示空行,不是空格
 . 代表且只能代表任意一個字元(不匹配空行)
 \ 轉義字元,讓有特殊含義的字元脫掉馬甲,現出原形,如\.只表示小數點
 * 重覆之前的字元或文本0個或多個,之前的文本或字元連續0次或多次
.* 任意多個字元
^.* 以任意多個字元串開頭,.*儘可能多,有多少算多少,貪婪性
[^abc] 匹配不包含^後的任意字元a或b或c,是對[abc]的取反,且與^含義不同
a\{n,m\} 重覆前面a字元n到m次(如果用egrep或sed -r可去掉斜線)

 

 

a\{n,\}重覆前面a字元至少n次,如果用egrep或sed -r可去掉斜線
a\{n\} 重覆前面a字元n次,如果用egrep或sed -r可去掉斜線
--- ---

擴展正則表達式ERE

特殊字元含義與例子
+ 重覆前一個字元一次或一次以上,前一個字元連續一個或多個,把連續的文本/字元取出
? 重覆前面一個字元0次或1次(.是有且只有1個)
管道符| 表示或者同時過濾多個字元
() 分組過濾被括起來的東西表示一個整體(一個字元)

 

管道符|

(): 分組過濾被括起來的東西表示一個整體(一個字元)

 

最早的文本匹配程式,使用POSIX定義的基本正則表達式(BRE)來匹配文本。

  • grep -E 強制讓grep直接認識正則符號,不需要再進行轉義
  • egrep 等效grep -E 天生就能認識正則符號
  • 我們平時備份可以通過cp 文件名{,.bak}的形式進行,避免再打一次文件名
  • sed -r :讓sed支持正則

 

基本正則和擴展正則區別

基礎正則BRE擴展正則ERE
\? ?
\+ +
\{\} {}
\( \ ) ()
\  

所謂基礎正則實際上就是得需要轉義字元配合表達的正則,而擴展正則就是讓命令擴展它的許可權讓他直接就認識正則表達符號(egrep,sed -r,awk直接支持)

 

補充說明

1 一些預定義的:

正則表達式描述示例
[:alnum:] [a-zA-Z0-9]匹配任意一個字母或數字字元 [[:alnum:]]+
[:alpha:] 匹配任意一個字母字元(包括大小寫字母) [[:alpha:]]{4}
[:blank:] 空格與製表符(橫向縱向) [[:blank:]]*
[:digit:] 匹配任意一個數字字元 [[:digit:]]?
[:lower:] 匹配小寫字母 [[:lower:]]{5,}
[:upper:] 匹配大寫字母 ([[:upper:]]+)?
[:punct:] 匹配標點符號 [[:punct:]]
[:space:] 匹配一個包括換行符,回車等在內的所有空白符 [[:space:]]+
[:graph:] 匹配任何一個可以看得見的且可以列印的字元 [[:graph:]]
[:xdigit:] 任何一個十六進位數 [[:xdigit:]]+
[:cntrl:] 任何一個控制字元(ASCII字元集中的前32個字元) [[:cntrl:]]
[:print:] 任何一個可以列印的字元 [[:print:]]

2 元字元

元字元是一種Perl風格的正則表達式,只有一部分文本處理工具支持它,並不是所有的文本處理工具都支持

正則表達式描述示例
\b 單詞邊界 \bcool\b匹配cool,不匹配coolant
\B 非單詞邊界 cool\B匹配coolant不匹配cool
\d 單個數字字元 b\db匹配b2b,不匹配bcb
\D 單個非數字字元 b\Db匹配bcb不匹配b2b
\w 單個單詞字元(字母,數字與_) \w匹配1或a,不匹配&
\W 單個非單詞字元 \W匹配&,不匹配1或a
\n 換行符 \n匹配一個新行
\s 單個空白字元 x\sx匹配xx,不匹配xx
\S 單個非空白字元 x\S\x匹配xkx,不匹配xx
\r 回車 \r匹配回車
\t 橫向製表符 \t匹配一個橫向製表符
\v 垂直製表符 \v匹配一個垂直製表符
\f 換頁符 \f匹配一個換頁符

 

參考博客:http://www.cnblogs.com/chensiqiqi/p/6285060.html


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

-Advertisement-
Play Games
更多相關文章
  • 添加了此命令後可以使用subl加文件或路徑,就能通過命令行使用sublime text打開相應的文件或目錄。 這裡我的是MacOS,windows系統換路徑就好。 第一步 第二步 我這裡就搞定了。 不過實際操作中可能會遇到很多情況,有大神講解過。 這裡附上stackoverflow里大神原稿,看第一 ...
  • 環境說明: 系統: CentOS 6.6 部署模式: 分離式(三個服務部署到三台服務上) 版本: HTTP 2.4.25 + PHP 5.4.13 + MySQL 5.5.28 IP規劃: HTTP: 192.168.205.116 PHP: 192.168.205.117 MySQL: 192.1 ...
  • 一般使用 PuTTY 等 SSH 客戶端來遠程管理 Linux 伺服器。但是,一般的密碼方式登錄,容易有密碼被暴力破解的問題。所以,一般我們會將 SSH 的埠設置為預設的 22 以外的埠,或者禁用 root 賬戶登錄。其實,有一個更好的辦法來保證安全,而且讓你可以放心地用 root 賬戶從遠程登 ...
  • shell中test的運用 test 命令是用於檢查某個條件是否成立,他可以進行數值、符號、文件三個方面的測試 1.數值中的運用 1.數值中的運用 -eq 等於 -ne 不等於 -gt 大於 -ge 大於等於 -lt 小於則為真 -le 小於等於則為真 2.字元串測試 = 等於 != 不等於 -z ...
  • 2010年以前,互聯網公司最常用的Web服務組合就是LAMP(即Linux、Apache、MySQL、PHP),近幾年隨著Nginx Web服務的逐漸流行,又出現了新的Web服務環境組合--LNMP or LEMP。LNMP即Linux、Nginx、MySQL、PHP。LEMP中的E表示的也是Ngi ...
  • 文件查找(find) 1 find 簡單的說,就是實時查找指定的內容或條件。特點:最新、最快、最準確。 用法:find [查找路徑] [查找條件] [找到後進行的動作] eg. find /etc/ -name "ipsec.conf" -print 2 常用查找方式 -name 按文件名稱查找,可 ...
  • ## zabbix監控elk的es值(線上) ### 1、es伺服器、192.168.**.**伺服器(agent端)1. > 首先通過curl -s -XGET http://localhost:9200/_cat/indices?bytes=G獲取數據 1. > 安裝zabbix-agent 1 ...
  • 正則表達式基礎以及grep的簡單使用 1 定義 正則表達式是你所定義的模式模板,Linux可以用它來過濾文本。Linux工具(比如grep、sed、gawk)能夠在處理數據時使用正則表達式對數據進行模式匹配。如果數據匹配模式,它就會被接受併進一步處理;如果數據不匹配,它就會被濾掉。 2 正則表達式的 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...