1. 程式人生 > >正則表達式的一些小內容

正則表達式的一些小內容

擴展正則表達式 bre -o reg sha ron sed、 mark 之間

首先吐槽:Markdown太難用了,折磨死人,不會而且顯示效果還沒我的筆記好。
技術分享圖片
grep: Global search Regular Expression(RE) and Print out the line

作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行

模式:由正則表達式字符及文本字符所編寫的過濾條件
grep -q的用法

技術分享圖片
正則表達式也叫規則表達式
REGEXP: Regular Expressions,由一類特殊字符及文本字符所編寫的模式,
其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能
支持程序:grep、sed、awk、vim、less、nginx、varnish

分兩類 {1.基本正則表達式BRE 2.擴展正則表達式ERE}
元字符分類:字符匹配、匹配字數、位置錨定分組

匹配字符
[] 匹配指定範圍內的任意單個字符,示例:[wang] [0-9]
. 匹配任意單個字符
匹配字數
** 匹配前面的字符任意次,包括0次
.
:功能相當於通配符裏的*,也即匹配任意個數的任意字符
\? 匹配其前面的字符0或1次
+ 匹配其前面的字符至少1次
{n} 匹配前面的字符n次
{m,n} 匹配前面的字符至少m次,至多n次
{,n} 匹配前面的字符至多n次
{n,} 匹配前面的字符至少n次
位置錨定*
^ 行首錨定,用於模式的最左側
$ 行尾錨定,用於模式的最右側
^PATTERN$ 用於模式匹配整行

^$ 空行
^[[:space:]]
$ 空白行
\< 或 \b 詞首錨定,用於單詞模式的左側
\> 或 \b 詞尾錨定,用於單詞模式的右側
\<PATTERN\> 匹配
\b是正則表達式規定的一個特殊代碼(好吧,某些人叫它元字符,metacharacter),代表著單詞的開頭或結尾,也就是單詞的分界處。
分組
?分組括號中的模式匹配到的內容會被正則表達式引擎記錄於內部的變量中,這些變量的命名方式為: \1, \2, \3, ...
\1 表示從左側起第一個左括號以及與之匹配右括號之間的模式所匹配到的字符;從左向右,以分組的左括號為標誌,第一個出現的分組的組號為1,第二個為2,以此類推。
後向引用:引用前面的分組括號中的模式所匹配字符,而非模式本身
示例1
\b(\w+)\b\s+\1\b可以用來匹配重復的單詞,像go go, 或者kitty kitty。這個表達式首先是一個單詞,也就是單詞開始處和結束處之間的多於一個的字母或數字(\b(\w+)\b),這個單詞會被捕獲到編號為1的分組中,然後是1個或幾個空白符(\s+),最後是分組1中捕獲的內容(也就是前面匹配的那個單詞)(\1)。
示例2

技術分享圖片

正則表達式的一些小內容