天天看點

正規表達式的學習(摘錄)

正規表達式

對于初學很難,明明就幾個規則,咋就是學不會,不會寫呢,到底正規表達式是啥,

筆者摘錄一部分易于解釋的文章幫助大家了解。

正規表達式(regular expression)就是用一個“字元串”來描述一個特征,然後去驗證另一個“字元串”是否符合這個特征。比如 表達式“ab+” 描述的特征是“一個 'a' 和 任意個 'b' ”,那麼 'ab', 'abb', 'abbbbbbbbbb' 都符合這個特征, 這個解釋好了解。

正規表達式可以用來:(1)驗證字元串是否符合指定特征,比如驗證是否是合法的郵件位址。(2)用來查找字元串,從一個長的文本中查找符合指定特征的字元串,比查找固定字元串更加靈活友善。(3)用來替換,比普通的替換更強大,其實這點在我們常用的編輯器就可以發現,大多的文本編輯器都應用了正規表達式。 --完美,像我這樣不懂的人也了解了。

1. 學習基本的規則

2. 學習工具

3. 多實踐,實踐是學習和認知的最終歸宿

------------------------------------------------------------------------------

以下是摘錄,寫的非常易于了解:

1. 正規表達式規則 1.1 普通字元      字母、數字、漢字、下劃線、以及後邊章節中沒有特殊定義的标點符号,都是 " 普通字元 " 。表達式中的普通字元,在比對一個字元串的時候,比對與之相同的一個字元。

    舉例1:表達式 "c",在比對字元串 "abcde" 時 ,比對結果是:成功;比對到的内容是: "c" ;比對到的位置是:開始于 2 ,結束于 3 。(注:下标從 0 開始還是從 1 開始,因目前程式設計語言的不同而可能不同)

    舉例2:表達式 "bcd",在比對字元串 "abcde" 時 ,比對結果是:成功;比對到的内容是: "bcd" ;比對到的位置是:開始于 1 ,結束于 4 。 1.2 簡單的轉義字元      一些不便書寫的字元,采用在前面加  "\"  的方法。這些字元其實我們都已經熟知了。

表達式 可比對
\r, \n 代表回車和換行符
\t 制表符
\\ 代表  "\"  本身

     還有其他一些在後邊章節中有特殊用處的标點符号,在前面加  "\"  後,就代表該符号本身。比如: ^, $  都有特殊意義,如果要想比對字元串中  "^"  和  "$"  字元,則表達式就需要寫成  "\^"  和  "\$" 。

表達式 可比對
\^ 比對  ^  符号本身
\$ 比對  $  符号本身
\. 比對小數點( . )本身

     這些轉義字元的比對方法與  " 普通字元 "  是類似的。也是比對與之相同的一個字元。

    舉例1:表達式 "\$d",在比對字元串 "abc$de" 時 ,比對結果是:成功;比對到的内容是: "$d" ;比對到的位置是:開始于 3 ,結束于 5 。 1.3 能夠與 '多種字元' 比對的表達式      正規表達式中的一些表示方法,可以比對  ' 多種字元 '  其中的任意一個字元。比如,表達式  "\d"  可以比對任意一個數字。雖然可以比對其中任意字元,但是隻能是一個,不是多個。這就好比玩撲克牌時候,大小王可以代替任意一張牌,但是隻能代替一張牌。

表達式 可比對
\d 任意一個數字, 0~9  中的任意一個
\w 任意一個字母或數字或下劃線,也就是  A~Z,a~z,0~9,_  中任意一個
\s 包括空格、制表符、換頁符等空白字元的其中任意一個
. 小數點可以比對除了換行符( \n )以外的任意一個字元

    舉例1:表達式 "\d\d",在比對 "abc123" 時 ,比對的結果是:成功;比對到的内容是: "12" ;比對到的位置是:開始于 3 ,結束于 5 。

    舉例2:表達式 "a.\d",在比對 "aaa100" 時 ,比對的結果是:成功;比對到的内容是: "aa1" ;比對到的位置是:開始于 1 ,結束于 4 。 1.4 自定義能夠比對 '多種字元' 的表達式      使用方括号  [ ]  包含一系列字元,能夠比對其中任意一個字元。用  [^ ]  包含一系列字元,則能夠比對其中字元之外的任意一個字元。同樣的道理,雖然可以比對其中任意一個,但是隻能是一個,不是多個。

表達式 可比對
[[email protected]] 比對  "a"  或  "b"  或  "5"  或  "@"
[^abc] 比對  "a","b","c"  之外的任意一個字元
[f-k] 比對  "f"~"k"  之間的任意一個字母
[^A-F0-3] 比對  "A"~"F","0"~"3"  之外的任意一個字元

    舉例1:表達式 "[bcd][bcd]" 比對 "abc123" 時 ,比對的結果是:成功;比對到的内容是: "bc" ;比對到的位置是:開始于 1 ,結束于 3 。

    舉例2:表達式 "[^abc]" 比對 "abc123" 時 ,比對的結果是:成功;比對到的内容是: "1" ;比對到的位置是:開始于 3 ,結束于 4 。 1.5 修飾比對次數的特殊符号      前面章節中講到的表達式,無論是隻能比對一種字元的表達式,還是可以比對多種字元其中任意一個的表達式,都隻能比對一次。如果使用表達式再加上修飾比對次數的特殊符号,那麼不用重複書寫表達式就可以重複比對。

     使用方法是: " 次數修飾 " 放在 " 被修飾的表達式 " 後邊。比如: "[bcd][bcd]"  可以寫成  "[bcd]{2}" 。

表達式 作用
{n} 表達式重複 n 次,比如: "\w{2}" 相當于 "\w\w" ; "a{5}" 相當于 "aaaaa"
{m,n} 表達式至少重複 m 次,最多重複 n 次,比如: "ba{1,3}"可以比對 "ba"或"baa"或"baaa"
{m,} 表達式至少重複 m 次,比如: "\w\d{2,}"可以比對 "a12","_456","M12344"...
? 比對表達式 0 次或者 1 次,相當于  {0,1} ,比如: "a[cd]?"可以比對 "a","ac","ad"
+ 表達式至少出現 1 次,相當于  {1,} ,比如: "a+b"可以比對 "ab","aab","aaab"...
* 表達式不出現或出現任意次,相當于  {0,} ,比如: "\^*b"可以比對 "b","^^^b"...

    舉例1:表達式 "\d+\.?\d*" 在比對 "It costs $12.5" 時 ,比對的結果是:成功;比對到的内容是: "12.5" ;比對到的位置是:開始于 10 ,結束于 14 。

    舉例2:表達式 "go{2,8}gle" 在比對 "Ads by goooooogle" 時 ,比對的結果是:成功;比對到的内容是: "goooooogle" ;比對到的位置是:開始于 7 ,結束于 17 。 1.6 其他一些代表抽象意義的特殊符号      一些符号在表達式中代表抽象的特殊意義:

表達式 作用
^ 與字元串開始的地方比對,不比對任何字元
$ 與字元串結束的地方比對,不比對任何字元
\b

--------------------------------------------------------------------------------------------------------

工具:RegexBuddy 非常好用的正則工具,關于工具的使用,在使用的時候會說明

最後告知大家,要多實踐。用多了就明白了,會了。

繼續閱讀