通過例子學習正規表示式 一 基礎知識

2021-03-31 08:56:28 字數 1948 閱讀 3183

正規表示式的基本語法:

首先,讓我們看一看兩個特殊符號:'^' 和 '$'.它們的作用是指明乙個字串的開頭和結尾.分別像這樣:

"^the": 對應任何以 "the" 開始的字串

"of despair$": 對應以 "of despair" 結尾的字串

"^abc$": 乙個以 "abc" 開頭然後結尾的字串---就是"abc"自己!

"notice": 乙個包含"notice" 的字串.

你可以看到如果你兩個符號都不使用,就像最後的那個例子,你等於在表述:在字串的任意位置符合樣式都可以,就是說你不管它出現在頭還是尾.

還有幾個符號 '*', '+', 和 '?',它們表示字元或字串出現的數目. 他們的意思分別是:"0或更多(任意)", "1或更多(至少1次)", 和"0或1次(至多1次)". 下面有一些例子:

"ab*": 對應乙個含有乙個 a 後跟有任意個 b 的字串 ("a", "ab", "abbb", 等等.);

"ab+": 類似, 不過至少有乙個 b ("ab", "abbb", 等等.);

"ab?": 要麼乙個 b 要麼沒有;

"a?b+$": 結尾部分可能有乙個 a ,也可能沒有,後面是1個以上的 b.

你還可以使用花括號,裡面的數字將指明前面字元出現的範圍:

"ab": 對應含有乙個 a 後面跟著2個 b ("abb") 的字串;

"ab": 至少含有2個b 的("abb", "abbbb", 等等.);

"ab": 3到5個 b ("abbb", "abbbb", or "abbbbb").

注意你必須注意範圍的第乙個數字.(例如:"", 不可以是""). 同時你可能已經注意到了,字元'*', '+', 和'?'與"", "", 和 ""的功能是一樣的.

現在,來量化一些字串行/小字串,把他們放入圓括號裡:

"a(bc)*": 對應乙個含有任意個 "bc" 在 a 後面的字串;

"a(bc)": 1到5個 "bc" 都可以.

還有'|'字元,作用如同or,用來選擇:

"hi|hello": 對應乙個有"hi" 或者 "hello" 的字串;

"(b|cd)ef": 乙個有 "bef" 或者 "cdef" 的字串;

"(a|b)*c": 乙個字串有任意個a和b 的組合,然後以乙個 c 結尾;

乙個句號('.')表示任意單獨字元:

"a.[0-9]": 表示擁有乙個 a 後面跟著乙個字元和乙個數字的字串;

"^.$": 有 3 個字元的字串.

方括號明確指出哪些字元可以出現在某個單個字元的位置:

"[ab]": 對應乙個有乙個 a 或者乙個 b (等同於"a|b");

"[a-d]": 乙個字串有小寫字母 'a' 到 'd' (等同於 "a|b|c|d" 甚至是 "[abcd]");

"^[a-za-z]": 乙個開始字元是英文本母的字串;

"[0-9]%": 有乙個數字在百分號前的字串;

",[a-za-z0-9]$": 乙個字串結尾是逗號後面跟著乙個數字或字母.

你可以使用乙個列表剔除你不想要的字元--只要使用乙個'^'在你的方括號裡的第乙個位置 (例如, "%[^a-za-z]%" 表示在兩個百分號之間的乙個字元不是英文本母).另外,你必須注意,某些時候,你不必多加乙個反斜槓表示特殊字元失效,比如在字元類的第乙個位置時.看例子:"($|¥)[0-9]+"的含義可以表示成ereg("(/$|¥)[0-9]+", $str) (這匹配的是什麼字串?)

不要忘記了,在方括號裡的所有特殊字元都將失去特殊含義(注: '^'和'-'例外吧),包括反斜槓,例如"[*+?{}.]"就是匹配這些符號中的任意乙個. regex man pages告訴我們:如果包含乙個']',你可以把它放在第乙個字元位置,也可以在它的前面放乙個反斜槓(例如/[abc]]/)

正規表示式 例子學習

正規表示式是乙個程式設計的藝術,很難除錯,學習和理解,但強大的功能,仍吸引不少開發者編寫正規表示式。讓我們探索一下下面10個實際應用中的正規表示式。1.使用者名稱正規表示式模式 a z0 9 行開始 a z0 9 匹配列表中的字元,a z,0 9,下劃線,連字元 長度至少3個字元,最大長度為15 行...

正規表示式例子

前言 regular expressions 正規表示式,以下用re稱呼 對小弟來說一直都是神密的地帶,看到一些網路上的大大,簡單用re就決解了某些文字的問題,小弟便興起了學一學re的想法,但小弟天生就比較懶一些,總希望看有沒有些快速學習的方式,於是小弟又請出google大神,借由祂的神力,小弟在網...

正規表示式例子

include regex.hpp include include include include inttest regex match d d d fixed telephone std regex re pattern std vector str std regex match 判斷乙個正規...