我學習正則表達式 大概用了 一個下午,準備讓你們 兩個小時學會。
如果 是計算機畢業的 學過正則文法,機器語言的。並且上課好好聽的作業沒有抄襲別人的。學習正則基礎篇的 估計用不了兩個小時。耐心的寫幾個。 估計就沒啥問題了。
這次 直說 基礎學習。不說 什麼概念。基礎學會了 感覺有意思了 在看看《精通正則表達式(第三版)》.(美) 網上有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天的 用上面的知識都是可以完成的
感悟吧 寫正則就是想 庖丁解牛 你要看到他的骨架 而不是真身。想想都是什麼構成的 規則是什麼 最多的可能出現的場景。 然後 一一去匹配他。自己學會之後 寫正則會上癮的。
還有就是 我不打算寫進階 高級篇 網上 已經很多 資料了 挺簡單的。沒時間的話 也不用看《精通正則表達式(第三版)》 這個書 我就是無意間看到了 就像一個酒鬼看見一個新酒 想上去喝兩口 一樣的道理。(語文從來沒有及格過)