基本正則表達式:REGular EXPression(REGEXP)
一、元字符:
. :匹配任意單個字符;
[] :匹配指定範圍內的任意單個字符;
[^]:匹配指定範圍外的任意單個字符。
PS:常用字符集合
[:digit:] —— 數字集合
[:lower:] —— 小寫字母集合
[:upper:] —— 大寫字母集合
[:space:] —— 空格
[:alpha:] —— 所有字母集合
[:alnum:] —— 所有字母和數字集合
二、次數匹配:
* : 匹配其前面的字符任意次;
.* :匹配任意長度的任意字符;
\? :匹配其前面的字符至少一次 ;
\{m,n\}:匹配其前面的字符至少m次,最多n次。
PS:正則表達式默認情況工作在貪婪模式下,即匹配符合表達式的最大長度字符串。
三、位置錨釘:
^ :錨釘行首,此字符後面的內容必須出現在行首;
$ :錨釘行尾,此字符前面的內容必須出現在行尾;
^$:空白行(錨釘剛開始就結束的行);
\<或\b:錨釘詞首,其後面的任意字符必須作爲單詞(非英語意義上的單詞)首部出現;
\>或\b:錨釘詞尾,其前面的任意字符必須作爲單詞(非英語意義上的單詞)尾部出現。
例如:\<root\>匹配root這個單詞。
四、分組:
\(\):匹配分組內容,將小括號中的內容作爲一個整體去匹配。
例如:\(ab\)*表示匹配“ab”任意次。
後向引用(有人也稱爲前向引用):在使用分組的前提下使用。
\1 —— 引用第一個左括號以及與之對應的右括號所包含的所有內容(無論是否出現括號嵌套)
\2 —— 引用第二個左括號以及與之對應的右括號所包含的所有內容(同上)
\3 —— ...(依次類推)...
例如以下三行內容:
He like his liker.
She love her lover.
He like her lover.
表達式:l..e 可以匹配每一行;
表達式:\(l..e\).*\1 只能匹配前兩行。
擴展正則表達式:(區別於基本正則表達式)
? :次數匹配,匹配其前面的字符最多一次(注意:此處前面沒有\);
+ :次數匹配,匹配其前面的字符至少一次(注意:基本正則表達式沒有此元字符);
{m,n}:次數匹配,用法同基本正則表達式 (花括號前面不需要使用\);
():分組,真正意義上的分組(不需要使用\),同樣支持後向引用;
| :或者。例如:a|b 匹配a或者b,C|cat 匹配C或者cat(匹配整個左邊或右邊)。
over.