簡述正則表達式

正則表達式:又稱規則表達式(regular expression),是一種模式匹配技術,由字面文本和具備特殊意義的符號組成。大多數文本處理工具都支持正則表達式(linux下的 find, grep等);經過構造合適的正則表達式,咱們能夠對文本文件進行過濾,剝離,替換,搜索等操做。linux

通俗講就是能夠經過正則表達式這種特殊格式,其用有限量已知的文本結合一些特定功能的符號去拓展一些不肯定的文本,從而獲得咱們想獲得的一系列與相關的文本。正則表達式

 


 

本篇只講解正則表達式(如下簡稱RE,匹配RE指實際操做中的RE),而不涉及實際運用的工具:express

1:位置標記位置標記錨點(^, $),用來標識字符串位置的RE,在默認狀況下,RE所匹配的字符能夠出如今字符串中的任何位置。工具

 ^ : 指定了匹配RE中的文本必須起始於字符串中的首部, 如:「^abc」能匹配以abc起始的行;spa

 $ : 指定了匹配RE中的文本必須結束於目標字符串中的尾部, 如:「^abc」能匹配以abc結尾的行;字符串

 

2:標識符:即指定特定的字符,進行匹配:io

任意一字符C: C就只能匹配字符C,該RE就只能匹配該字符;搜索

 . : 匹配任意一個字符, 如:abc. 能夠匹配abcd , abcz, 可是不能匹配abcde, abcdzx,只能匹配單個字符;grep

 [] :匹配中括號內任意一個字符,中括號內能夠是一個字符組或字符範圍, 如:abc[de]能夠匹配abcd, abceabc[0-9]能夠匹配abc0,abc3, abc9等;技術

 [^] :匹配不在中括號內的任意一個字符,中括號內能夠是一個字符組或字符範圍,如:abc[^12]能夠匹配abc3abcd,但不能匹配abc1, abc2, [^0-9],能匹配abc以及隨後不爲數字的任意單個字符;

 

3:數量修飾符:標識符可出現一次,屢次,或不出現,數量修飾符能夠定義模式出現的次數

' ? ': ?匹配在它以前出現的項(能夠是單個字符,或者標識符)1次或0次,如: abc?d, 就能夠匹配abcdabd, 但不能匹配abccd.

' + ': +匹配在他以前的項1次或屢次,如:abc+能夠匹配abc,abcc,但不可以匹配ab.

' * ': *匹配在他以前的項0次獲屢次,如:abc*d能夠匹配abd, abcd,abccd等.

 {n}: 匹配以前的項n次,如:[0-9]{3}能夠匹配任意的三位數(123,321..),[0-9]{3}能夠拓展爲[0-9][0-9][0-9].

{n, }: 以前的項至少須要匹配n次,如:[0-9]{2,}可以匹配任意一個兩位或兩位以上的數字.

{n,m}:以前的項至少須要匹配n次,最多隻能匹配m次,如:[0-9]{2,5}可以匹配兩位數到五位數之間的任意一個數字.

 

補充: ()能夠將其內部的內容視爲一個總體, |表示選擇,a | b表示匹配a或者b( a,b 爲項). \爲轉義字符,如匹配匹配中存在有(*, . , ^, $, + )特殊功能的符號,可在其前面加\ 進行轉義。

 


 

幾個正則表達式的例子:

匹配qq號: [1-9][0-9]{9} ,如今的qq號多爲10位。

匹配IP地址:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}, 此匹配不能檢查IP地址的合法性。

匹配任意字符串: .* 

......

還用不少的實用匹配等你去發現噢。

相關文章
相關標籤/搜索