正規表示式簡介

2021-04-25 02:59:10 字數 1947 閱讀 3462

乙個正規表示式就是乙個模式,由與文字進行匹配的字串行組成。正規表示式有著廣泛的應用:grep、sed、vim、make等等,某些指令碼語言如perl等更是將正規表示式納入語言內部。

正規表示式由原子和運算子組成。

最簡單的原子是單個字元,如果乙個正規表示式由單個字元組成,則該字元必須出現在目標文字的某處,以使模式進行成功的匹配。

「.」匹配除了換行符(/n)外的任意單個字元,常常與其他原子結合使用創造乙個表示式。如「a.」將單個原子字元a與點原子結合,表示任何以a開頭的雙字母組合。

類原子定義了乙個ascii字符集。只要與該集合中任意乙個字元匹配即可。類集合使用「」括起來。如:[abc]表示與a、b、c任意乙個匹配即可,即匹配a或b或c。

在類集合中使用「-」表示範圍,如:[a-d]表示從a到d的字元列表,即匹配a或b或c或d(等價於[abcd])。

類集合中使用「^」表示排除,即指定集合的補集為匹配模式,除了集合中標出字元之外的的任意ascii字元,如:[^0-9]表示非數字的任意字元。

類集合中使用「/」表示轉義。對於在類集合中有特定含義的字元,使用「/」表示字元本身的意思。如:[1/-3]表示匹配1或「-」或3;[^/^]除^之外的任意字元。

錨是在將模式與字串的特定部分進行行對齊時使用的原子。錨本身不是匹配文字,而是乙個位置標誌,標示模式中下乙個字元在文字中必須出現的位置。錨有四種型別:行首(^)、行尾($)、單詞開頭(/<)、單詞結尾(/>)。錨原子經常在結合中使用,例如,^a匹配以a開頭的行,a/>匹配以a結尾的單詞。

注意:行首錨(^)和行尾錨($)只有處於對應的位置才表示為錨,在其他位置則僅僅作為乙個文字字元與自己進行匹配。另外行首錨(^)與排除運算子(^)的區別,^只有在類集合中才表示排除。

向後引用:可以把文字暫時儲存在9個暫存器中的其中乙個,在正規表示式的後面可以使用乙個向後引用引用儲存在暫存器中的文字。使用轉義字元和範圍1到9的數字對向後引用進行編碼,如:/1  /2  ... /9;向後引用用於在正規表示式內部進行匹配。

運算子將正規表示式原子結合起來,分為:序列運算子、選擇運算子、重複運算子、組運算子和儲存運算子。

序列運算子沒有運算子,任何並列的原子之間均有序列運算子連線,即任何原子序列均有序列序列運算子連線而成。如:abc由原子a、b、c構成的序列,匹配含有abc的字串。

選擇運算子(|)用於表示選擇,例如:a|b表示匹配a或者b(類似單原子的選擇可用類運算符號),選擇運算通常用於字串行或字元組。例如:ms|miss|mrs匹配miss或ms或mrs。

重複運算子是轉義大括號(/)的集合,它包含由逗號分隔的兩個數字的集合。用於指定重複運算子前原子或表示式的重複次數。m指出重複出現的最少次數,n指出重複出現的最大次數。例如:a/匹配aaa或aaaa或aaaaa,重複太少或太多均不可。

/中m,n是可選的,但是必須至少指定乙個。當大括號中只有乙個數字時(不含逗號,即/)則表示精確重複x次--不能多或少。如果n值省略(即/)表示必須至少出現m次,即重複的次數》=m。同理,當m值省略(即/)時,則表示最多出現n次,即重複的次數為0~3次。

星號運算子(*)表示重複前面的原子0或多次,即等同於/。加號(+)用於指定原子必須出現1或多次,即等同於/。問號(?)用於表示原子出現0或1次,即等同於/。

注意:點(.)運算子與重複運算子的搭配,例如:.*匹配0到多個非換行符。另外,正規表示式中的運算子(*?)與萬用字元(*  ?)的區別,正規表示式的運算子不能單獨使用,只是用來標註其前面原子的重複次數,而萬用字元本身就代表了字元及重複次數兩個含義。

關於重複運算的匹配方式:貪婪模式匹配,表示在模式匹配中,匹配的最終結果是取與模式匹配的最長字串。(有些應用中提供最小匹配的選項)。

儲存運算子是轉義的小括號集合/(/),用於把匹配的文字儲存到9個暫存器中的乙個,以便後面引用。在乙個正規表示式內,第1個被儲存的文字被複製到暫存器1,第2個被複製到暫存器2等等,最多可到第9個暫存器。一旦文字被儲存,就可以使用向後引用引用它。例如:/([a-z]/).*/1匹配以相同字母開始和結尾的字串(注意,由於匹配的貪婪模式,匹配的字串應最大化)。

正規表示式簡介

1.正規表示式 regular expression 是一種文字模式,包括普通字元 例如,a到z之間的字母 和特殊字元 稱為 元字元 2.正規表示式使用單個字串來描述,匹配一系列匹配某個句法規則的字串 3.萬用字元 1 萬用字元匹配檔名中的單個字元 像data?dat這樣的模式將查詢下列檔案 dat...

正規表示式簡介(微軟) 3 使用正規表示式

使用正規表示式 在典型的搜尋和替換操作中,必須提供要查詢的確切文字。這種技術對於靜態文字中的簡單搜尋和替換任務可能足夠了,但是由於它缺乏靈活性,因此在搜尋動態文字時就有困難了,甚至是不可能的。使用正規表示式,就可以 1.測試字串的某個模式。例如,可以對乙個輸入字串進行測試,看在該字串是否存在乙個 號...

VBS教程 正規表示式簡介 建立正規表示式

構造正規表示式的方法和建立數學表示式的方法一樣。也就是用多種元字元與操作符將小的表示式結合在一起來建立更大的表示式。可以通過在一對分隔符之間放入表示式模式的各種元件來構造乙個正規表示式。對 visual basic scr程式設計客棧ipt程式設計客棧ing edition 而言,分隔符為程式設計客...