寫演算法或者工作中,經常需要用到正規表示式,一般情況下,都是上網搜尋,由於偶爾遇到需要自己解決的情況,因此做一些正規表示式的學習及積累。
1、常用元字元:
\s
表示可以匹配任何空白字串
\d
表示任意任意數字
\w
表示字母、數字、下劃線
.
匹配除 "n" 之外的任何單個字元。要匹配包括 'n' 在內的任何字元,請使用像"(.|n)"的模式
2、常用語法:
+
加號代表前面的符號出現一次(只包含原本加號前面的那個字元)或者多次。比如:runoo+b,可以匹配runoob, runoooob
*
星號代表前面的符號可以不出現,或者出現1次或者多次。比如:runoo*b,可以匹配runob, runoob, runooooob
?
問號代表前面的字元最多只能出現一次。比如colou?r可以匹配:color,colour
$
匹配輸入字串的結尾位置
()
標記乙個子表示式的開始和結束位置。子表示式可以獲取供以後使用。1表示重複 正則第乙個圓括號內匹配到的內容,2表示重複正則第二個圓括號內匹配到的內容
比如有以下正則:
([a-z])([a-z])\2\1
則可以匹配字串abba
第乙個圓括號內的正則匹配字元a,則在字串最後\1這個位置必須是字元a,第二個括號匹配字元b,在倒數第二個位置\2必須是字元b
如果有巢狀的圓括號,順序是按左括號的次序計算的
1、字串每個字元都是大寫:
^[a-z]+$
2、在字串中尋找xyxy的子串行,x、y及xy、xy可以不連續:
.*(.).*(.).*\1.*\2.*
3、字串存在連續相同的字元:
.*(.)\1.*
4、待補充...
1、什麼是正規表示式的貪婪與非貪婪匹配
如:string str="abcaxc";
patter p="ab*c";
(1)貪婪匹配:正規表示式一般趨向於最大長度匹配,也就是所謂的貪婪匹配。如上面使用模式p匹配字串str,結果就是匹配到:abcaxc(ab*c)。
(2)非貪婪匹配:就是匹配到結果就好,就少的匹配字元。如上面使用模式p匹配字串str,結果就是匹配到:abc(ab*c)。
2.程式設計中如何區分兩種模式
預設是貪婪模式;在量詞後面直接加上乙個問號?就是非貪婪模式。
量詞::m到n個
*:任意多個
+:乙個到多個
?:0或乙個
常用正規表示式(整理)
1。d 注釋 匹配 非負整數 正整數 0 2。0 9 1 9 0 9 注釋 匹配 正整數 3。d 0 注釋 匹配 非正整數 負整數 0 4。0 9 1 9 0 9 注釋 匹配 負整數 5。d 注釋 匹配 整數 正整數和付整數和0 6。d d 注釋 匹配 非負浮點數 正浮點數 0 7。0 9 0 9 ...
常用正規表示式(整理)
1。d 注釋 匹配 非負整數 正整數 0 2。0 9 1 9 0 9 注釋 匹配 正整數 3。d 0 注釋 匹配 非正整數 負整數 0 4。0 9 1 9 0 9 注釋 匹配 負整數 5。d 注釋 匹配 整數 正整數和付整數和0 6。d d 注釋 匹配 非負浮點數 正浮點數 0 7。0 9 0 9 ...
常用正規表示式整理
標記一行的開始 cat 匹配所有以cat 序列開頭的行 標記一行的結尾 cat 匹配所有以cat 序列結尾的行 將不同表示式進行或運算組合 ab ac匹配ab 或者ac 限制運算表示式運算範圍,分隔表示式,可以限制 的作用範圍 ab cd 匹配以ab或cd 開頭的行 列舉取值內容,在字元組 內外,元...