天天看點

indesign 正規表達式_linux下關于正規表達式grep的一點總結

  短視訊,自媒體,達人種草一站服務

正規表達式(Regular Expression)是用于描述一組字元串特征的模式,用來比對特定的字元串。通過特殊字元+普通字元來進行模式描述,進而達到文本比對目的工具

正規表達式(Regular Expression) 是用于描述一組字元串特征的模式,用來比對特定的字元串。通過特殊字元+普通字元來進行模式描述,進而達到文本比對目的工具。類似于生活中常見的尋人啟示,通過描述一個人的特征來進行“搜尋比對”

如今正則已經被我們廣泛應用,目前被內建到了各種文本編輯器/文本處理工具當中

應用場景**驗證: **表單送出時,進行使用者名密碼驗證。**查找: **從大量資訊中快速提取指定内容。在一批url中,查找指定url替換: 将指定格式的文本,進行正則比對查找,找到之後進行特定替換,(vim文本替換等)

在很多技術領域(比如,自然語言處理,資料存儲等),正規表達式可以很友善的提取出我們想要的資訊,是以這部分必不可少構成基本要素字元類數量限定符位置限定符特殊符号

1. 字元類:

indesign 正規表達式_linux下關于正規表達式grep的一點總結

應用:

grep使用--color選項将比對的字元串以紅色标注出來Linux下可以用echo $?來列印上一條指令執行的退出碼,為0表示執行成功,1表示失敗。

實驗如下:

indesign 正規表達式_linux下關于正規表達式grep的一點總結

注意: 使用 . 預設為貪心比對,和後面的正則比對方式相關,後面再述。

indesign 正規表達式_linux下關于正規表達式grep的一點總結

2. 數量限定符:

indesign 正規表達式_linux下關于正規表達式grep的一點總結

應用:

indesign 正規表達式_linux下關于正規表達式grep的一點總結
indesign 正規表達式_linux下關于正規表達式grep的一點總結

3. 位置限定符:

indesign 正規表達式_linux下關于正規表達式grep的一點總結

注意: 其中 \b 用來限定是目标串中是否有以指定字元串開頭的單詞,我們稱之為詞界。 \B 稱之為非詞界

應用:

indesign 正規表達式_linux下關于正規表達式grep的一點總結

4. 特殊符号:

indesign 正規表達式_linux下關于正規表達式grep的一點總結
indesign 正規表達式_linux下關于正規表達式grep的一點總結
indesign 正規表達式_linux下關于正規表達式grep的一點總結

可是結果好像并不如我們所願?其實這裡還與正規表達式版本有關。 正則分為以下幾個版本:

基本的正規表達式(Basic Regular Expression 又叫 Basic RegEx 簡稱 BREs)擴充的正規表達式(Extended Regular Expression 又叫 Extended RegEx 簡稱 EREs)Perl 的正規表達式(Perl Regular Expression 又叫 Perl RegEx 簡稱 PREs)

在grep中指定相應的參數即可,而這幾個版本中預設的就是基本正則,帶上-E選項就是擴充正則,而帶上-P參數就是用perl版正則。解決前面的問題,我們這裡讓grep帶上-P選項便可解決了

版本間差別正規表達式的Extended規範和Basic規範基本相同。隻是在Basic規範下,有些字元 ?+{}|() 應解釋為普通字元,要表示上述特殊含義則需要加 \ 轉義。反之,在Extended規範下, ?+{}|() 應該被了解成特殊含義,要取其字面值,也要對其進行\ \ 轉義。是以, grep 工具帶上 -E 選項,表示使用擴充正則來進行比對(亦可直接使用egrep 指令操作),若沒有,則表示使用基準正則進行比對。帶-P選項使用的perl正則比對。它是perl語言內建的最重要的一種特性,它十分強大,很多語言設計正則式支援的時候基本上都參考Perl的正規表達式。正則比對模式

貪婪模式

正規表達式去比對時,會盡量多的去比對符合條件的内容,grep指令 預設使用的就是貪婪比對,

indesign 正規表達式_linux下關于正規表達式grep的一點總結

非貪婪模式 正規表達式去比對時,會盡量少的比對符合條件的内容 也就是說,一旦發現比對符合要求,立馬就比對成功,而不會繼續比對下去(除非有g選項,開啟下一組比對)

indesign 正規表達式_linux下關于正規表達式grep的一點總結

總結: 可以看到,非貪婪模式的辨別符,就是貪婪模式的辨別符後面加上一個 ?