一、正則表達式
一個系統的使用,不僅僅只是軟件的安裝調試和維護,同時也是對與現有環境的優化和改革,我們在linux的使用過程中總是會遇到很多對於參數的描述,有時我們需要的是參數本身所給出的答案,有時我們僅僅需要的只是參數的最終狀態結果。
是一些特殊或不很特殊的字符串模式的集合。通過一些元字符,來表示一些通配的意義,這可以簡單的稱之為正則表達式。
正則表達式:REGular EXPression, 簡寫為:REGEXP
元字符:
.:匹配任意單個字符
匹配字符次數(工作在貪婪模式下,盡可能的去匹配):
*:匹配其前面的字符任意次
a, b, ab, aab, acb, adb, amnb
a*b
.*:匹配任意長度的任意字符
[]:匹配指定范圍內的任意單個字符
[^]:匹配指定范圍外的任意單個字符
[:digit:], [:lower:], [:upper:], [:punct:], [:space:], [:alpha:], [:alnum:]
\?:匹配其前面的字符1次或0次
\{m,n\}:匹配其前面的字符至少m次,至多n次
\{1,\} 至少一次
\{0,3\} 至多三次
位置錨定:
^: 錨定行首,此字符後面的任意內容必須出現在行首
$: 錨定行尾,此字符後面的任意內容必須出現在行尾
^$: 空白行
\<或\b:錨定詞首,其後面的任意字符必須作為單詞首部出現
\>或\b: 錨定詞尾,其前面的任意字符必須作為單詞尾部出現
\<root\>: 精確匹配root
分組:
\(\)
\(ab\)* ab可以出現0次1次任意次
後向引用
\1: 第一個左括號以及與之對應的右括號所包括的所有內容
\2: 第二個左括號以及與之對應的右括號所包括的所有內容
\3: 第三個左括號以及與之對應的右括號所包括的所有內容
擴展的正則表達式:
字符匹配:
.:匹配任意單個字符
[]:匹配指定范圍內的任意單個字符
[^]:匹配指定范圍外的任意單個字符
次數匹配:
*:
?:匹配其前面的字符0次或一次
+:匹配其前面的字符至少一次
{m,n}:匹配至少m次至多n次
位置錨定:
^: 錨定行首,此字符後面的任意內容必須出現在行首
$: 錨定行尾,此字符後面的任意內容必須出現在行尾
^$: 空白行
\<或\b:錨定詞首,其後面的任意字符必須作為單詞首部出現
\>或\b: 錨定詞尾,其前面的任意字符必須作為單詞尾部出現
\<root\>: 精確匹配root
分組:
(): 分組
\1, \2, \3, ...
或者
|:or (a|abc a或者abc)