正則表達式書寫規范有哪些
正則表達式(regular expression)描述了一種字符串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。有哪些書寫規范?
正則表達式(regular expression)描述了一種字符串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。有哪些書寫規范?
正則表達式
grep-ni’the’test.txt-找出包含the的行,大小寫都可以
grep-n’t[ea]st’test.txt-找出包含test或者tast的行
grep-n’oo’test.txt-找出包含oo的行
grep-n’[g]oo’test.txt-找出包含goo的行
grep-n’^[a-z]oo’test.txt-找出小寫字母為行首緊跟字母oo的行
grep-n[0-9]test.txt-找出包含數字的行
grep-n’^[a-z]’test.txt-找出小寫字母開頭的行
grep-n’^[a-zA-Z]’test.txt-找出小寫大寫字母開頭的行
grep-n’[.$]’test.txt-找出.結尾的行
grep-n’g..d’test.txt-找出包含g某某d的行
grep-n’o‘test.txt-找出包含零個o或者無數個o的行
grep-n’oo‘test.txt-找出至少包含一個o或者無數個o的行
grep-n’g.g’test.txt-找出包含g與g之間無字符或任意字符的行
grep-n’o{2}‘test.txt-找出包含oo的行
grep-n’o{2,5}‘test.txt-找出包含oo到ooooo的行
grep-n’o{2,}‘test.txt-找出包含oo到若干o的行
egrep-n’go+d’test.txt-找出包含g與g之間一個o或者多個o的行
egrep-n’go?d’test.txt-找出包含g與g之間零個o或者一個o的行
egrep-n’god’test.txt-找出包含g與g之間零個o或者任意o的行
回答所涉及的環境:聯想天逸510S、Windows 10。
正則書寫的關鍵點只有三個:一是所有基礎表達式默認都能且只能匹配一個字符,二是除非其后給出限定符另外指出匹配次數,三是限定符只限定在其前面的那一個表達式(^定位符只對其后一個表達式生效,$定位符只對其前一個表達式生效)。
另外記住以下規則:
正則元字符
元字符是表示其在正則表達式上下文中的行為,下面介紹常用的元字符以及作用:
“^”:匹配輸入字符串的開始位置
“$”:匹配輸入字符串的結束位置
“*”:匹配前面的子表達式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等價于{0,}。
“+”:匹配前面的子表達式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等價于 {1,}。
“?”:匹配前面的子表達式零次或一次。例如,”do(es)?” 可以匹配 “do” 或 “does” 。? 等價于 {0,1}。
“":將下一個字符標記為一個特殊字符、或一個原義字符、或一個 向后引用、或一個八進制轉義符
“\b” :匹配一個單詞邊界,也就是指單詞和空格間的位置
“\d”: 匹配一個數字字符。等價于 [0-9]
“\D”:匹配一個非數字字符。等價于 [^0-9]
“\f”: 匹配一個換頁符。等價于 \x0c 和 \cL
“\n”: 匹配一個換行符。等價于 \x0a 和 \cJ
“\r “:匹配一個回車符。等價于 \x0d 和 \cM
“\w”:匹配字母,數字,下劃線
正則反義
反義的寫法最簡單,把字母改成大寫就可以了,意思與原來的相反,比如
“\B”:匹配不是單詞開頭或結束的位置
“\S”:匹配任意不是空白符的字符
“\W” :匹配任意不是字母,數字,下劃線 的字符
“\D”:匹配任意非數字的字符
“[^abc]” :匹配除了abc以外的任意字符
正則量詞
量詞記住三個就行了:貪婪(*)、懶惰/勉強(?)、占有(+)
“”,重復零次或更多,字符會首先會盡可能多的匹配整個字符串,如果失敗,則回退一個字符,例如“a”會匹配a后面的所有的a
“?” ,重復零次或一次, 是從目標的起始位置開始嘗試匹配,每次檢查一個字符并且判斷是否是要找的字符,直到字符串結尾處,例如:”bbbbbb” 匹配字符串中的b 正則 : “b?” 只會匹配一次,也就是結果只是單個字符b
“+” ,重復一次或更多次,它會覆蓋整個目標字符串,然后嘗試尋找匹配內容 ,但它只嘗試一次,例如:”cccccc” 匹配字符串中所有的c 正則: “c+” 會取到字符中所有的c字符
回答所涉及的環境:聯想天逸510S、Windows 10。