前言
上大學的時候,總覺得正則表達式難極了,看一點就頭昏眼花高血壓。於是始終都沒有好好去學過正則表達式。
后來成了程序員,覺得正則表達式是一裝逼利器。可是讓我這個菜鳥程序員看起來並不那么菜鳥。
於是去看書,去找視頻。書看的是某本xxx4.0從入門到精通。后來的看的是楊中科老師的視頻。總共講了十幾個視頻吧。楊老師講課風趣幽默倒是真的。期間還跟着視頻做了正則表達式從某美女圖片網站一鍵下載頁面全部圖片的小程序。一點點慢慢從理解到寫demo,再到后來項目中url重寫第一次在工作中用到正則。慢慢的開始熟悉了。前后加起來不過半個多月的時間。說半個多月是因為我並沒有苦心專研。因為我基本每天只看兩個學習的視頻然后寫點自己想到可以應用的小例子就開始看電視劇去了
正文
首先正則表達式干嘛用的呢。沒錯就是用來匹配字符串的。記得數據庫中的like關鍵字嗎關鍵字中的like ‘%a%’中的’%a%’其實就是一個類正則表達式。%是一個通配符。那么正則表達式中的有哪些類似的這種符號呢?
. 可以匹配所有字符,類似於上例中的%吧
\d ,[0-9]可以匹配一個數字,
根據[0-9]舉一反三同理可得[a-z],[A-Z]表示什么你們應該猜到了吧。沒錯小寫和大寫。
正則表達式還可以這樣[0-9]你想讓他不僅匹配字符串,同時也支持匹配數字怎么辦呢,往里面加啊,[0-9a-z],你說這[a-z]只匹配小寫么,再加個[0-9a-zA-Z],想要什么往里面加就是了,加量不加價。
\w可以匹配一個漢字,下划線,大小寫字母,數字。
\s可以匹配一個空格
有人說我想只匹配 . 怎么辦呢,這時候就有個轉義符了,斜杠 \。嘿嘿轉一下\.就行啦,舉一反三同理得出,\\表示一個斜杠,其他的小伙伴們自己去舉一反三吧。
常用就上面這么多吧。我覺得夠了吧
或匹配:
A|B 匹配A或者B,當然我習慣性會(A|B),更清晰一些也不會弄錯。
那么如果要匹配多個數字咋辦呀總不能\d\d\d\d吧,看着就心碎。
a*表示0個或者多個a
a+表示一個或一個以上的a
a?表示a可有可無,即0個或1個a。
a{n,m}表示a可能出現n到m次。
好了剩下的就是把上面的東西用起來。
1:寫一個手機號碼,假設這個數字第二位可能是3,5,8,后面的基本都見過吧,
1(3|5|8)(\d){10},
2:寫一個郵件地址:
(\w+)@(\w+)\.(com|net) 這里只寫一般的郵箱
個人覺得可以寫正則表達式的時候分部分寫是最佳的。
結尾
這邊講些基礎的,下次有時間講些C#中的用法和正則分組的概念,一方面給供新手們學習,一方面自己也可查閱和復習。我覺得寫博客除了可以鍛煉自己的思維能力,總結能力,文字表達能力,這方面也是對自己大有裨益的。
