正則表達式零基礎學習

我學習正則表達式 大概用了 一個下午,準備讓你們 兩個小時學會。

 如果 是計算機畢業的 學過正則文法,機器語言的。並且上課好好聽的作業沒有抄襲別人的。學習正則基礎篇的 估計用不了兩個小時。耐心的寫幾個。 估計就沒啥問題了。

這次 直說 基礎學習。不說 什麼概念。基礎學會了 感覺有意思了 在看看《精通正則表達式(第三版)》.(美) 網上有pdf的。或者自己百度百度 谷歌谷歌。深入的學習。不說了開始吧。 == 主要針對零基礎的。有基礎的就算了。

[0-9] 是個區間 就跟 高三數學裏面的 區間[0-9] 一樣 只是 他表示的都是 Z*  正整數 (我學完 JS 正則 之後 就感覺 萬事萬物都是想通的);

* 是個元字符   零個或者多個  就是 用數學的 就是 0到正無窮多個

+ 是個元字符  一個或者多個  數學裏面是 1到正無窮 

.是個元字符   代表任意東西

[] 裏面 可以是枚舉 比如  我只需要 124  就可以這樣寫  [124]  如果你是連續的  比如  12345678 可以寫爲 [1-8]; - 表示 是個區間      這個就是個軍火庫 你想要什麼 裏面你就放什麼 

[^] 取反  就像 二進制的 ^1 一樣 取非 

{} 是個區間符號  正則裏面的區間  {1,3} 表示  數學的區間就是 [1,3]; 都是閉區間,{x,} 表示  x到正無窮 包含X X 代表正整數,{10} 就是代表  一定要有10個;

現在寫一個 1234567890 的 正則表達式  條件 就是 一個 10位的 正整數  可以這樣寫  [0-9]{10}; 數字的位數 不確定   可能一個數字都沒有  [0-9]*,至少 只有一個 [0-9]+ 或者 [0-9]{1,};

格式化一個時間吧  比如 現在比較流行的 時間 格式  2015.2.2  現在 你必須格式化成 這樣樣子  沒有學正則之前 你肯定想的  用 DateFormat  去格式化  直接  yyyy.M.d 這樣子  但是 你這樣字格式化如果 是  2015.12.12  就會格式化  成 2015.2.2 ,明顯 是不對的 。其實 換個思考 你也替換下  你先應該可以寫出來的是 用  testStr.replaceAll(".0", "");

這樣 你會發現 會有問題   因爲 .可以 跟任何的字符匹配  這個時候 你需要轉義  \\. 就會轉移成 真正的.  轉義的知識 跟所有的程序中轉義都是一樣的。

應該寫成  testStr.replaceAll("\\.0", ""); 就OK了 。


以上就是規則 跟。基礎的 並沒有講? 涉及到問號 之後  就會有 懶惰模式 跟貪婪模式 只別  先把基礎的看會吧  再去看這個吧。

留幾個作業吧, 這東西 要多用 我是看了一個下午 但是 我給自己佈置作業寫了兩天。 開發中碰見的問題 儘量自己用正則解決 一個月就差不多了。

字符串 2015-12-10 09:33:00.0   只保留年月日   使用正則。  \\s(\\d{2}:){2}\\d{2}\\.\\d$  這個是答案  但是你看不懂。 這些 你要是都沒有學會 就不要查 這個正則是咋寫出來的  

還有一個就是匹配 IP 地址的  比如  192.168.1.1 自己想想 IP 地址的規則 寫吧,正則 沒有什麼 簡繁之稱  自己能看懂,別人能看懂。能解決問題 就是好正則。 這不是我說的。《精通正則表達式(第三版)》的作者說的。

這些都寫完之後  可以寫寫時間的  考慮 間隔符  年月日  - . 閏年  二月   30天的 31天的  用上面的知識都是可以完成的 

 感悟吧  寫正則就是想  庖丁解牛  你要看到他的骨架 而不是真身。想想都是什麼構成的 規則是什麼  最多的可能出現的場景。 然後 一一去匹配他。自己學會之後 寫正則會上癮的。 

還有就是 我不打算寫進階 高級篇  網上 已經很多 資料了  挺簡單的。沒時間的話 也不用看《精通正則表達式(第三版)》 這個書  我就是無意間看到了  就像一個酒鬼看見一個新酒 想上去喝兩口 一樣的道理。(語文從來沒有及格過)









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章