~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
開發工具與關鍵技術:VS
作者:吳業華
撰寫時間:2019年7月5號
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在編程中,我們編寫程序或網頁時,經常會遇到各種類型的字符串,這些字符串看似簡單,
但多種類型集合在一起會有些煩惱哦,而學好正則表達式呢:就可以讓你可以方便獲取到,
你想要的字符串 這樣子的話就很方便。
不過呢,在我學習正則表達式的時候呢 很燒腦:幾乎是連續幾天才摸清一點門檻
不過當你學好正則後你會發現在互聯網中有很多東西都跟正則扯上關係如:平時我們註冊一個QQ號 或者 註冊一個微信好 我們不是要輸入手機號碼、密碼、身份信息等等嗎、那你試着輸入一個格式錯誤的這時它會提醒您輸入錯誤
如:你在輸入請填寫您的手機號碼框填寫你的用戶名稱。它肯定會提示您請輸入正確的手機號碼這個是肯定的 作者當初還以爲是人工給的提醒
好了下面進入正題:
正則表達式是用於進行文本匹配的工具,所以會涉及到搜索、查找、替換、匹配刪除等獲取操作字符串的操作
比如說你在看一本查理九世 然後你 搜索一下 主人公 查理 你可以使用正則表達式查理。來進行查找匹配。不過呢這個是最粗略的匹配
要是出現很多連續的字符,比如:查理九世,查理三世,查理八世等等。用查理來查找的話,這裏邊的查理也會被找出來。如果要精確的查找查理這個的話,我們應該使用\^查理\$。
在學習正則表達式時我們一定要先把 正則的元字符弄清楚是什麼意思
如:
. 匹配除換行符以外的任意字符
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字符串的開始
$ 匹配字符串的結束
元字符^(和數字6在同一個鍵位上的符號)$(和數字4在同一個鍵位)$和\b有點類似,都匹配一個位置。^匹配你要用來查找的字符串的開頭,$匹配結尾。這兩個代碼在驗證輸入的內容時非常有用,比如一個網站如果要求你填寫的QQ號碼必須是5位到12位的數字時,可以使用:^\d{5,12}$.
因爲使用了^和$,所以輸入的整個字符串都要用來和\d{5,12}來匹配,也就是說整個輸入必須是5到12個數字,因此如果輸入的QQ號能匹配這個正則表達式的話,那就符合要求了。
字符轉義:
如果你想查找元字符的本身的話,比如你查找.,或者*,就出現了問題:你沒法指定它們,因爲它們會被解釋成其它的意思。這時你就必須使用\來取消這些字符的特殊意義。因此,你應該使用\.和\*。當然,要查找\本身,你也得用\\.
例如:www\.baidu\.com匹配www.baidu.com,c:\\windows
匹配c:\windows。
重複
下面是正則表達式中所有的限定符(指定數量的代碼,例如*,{5,12}等):
* 重複0次或更多次
+ 重複一次或更多次
? 重複0次或一次
{n} 重複n次
{n,} 重複n次或更多次
{n,m} 重複n到m次
下面是一些使用了重複的例子:
Windows\d+匹配windows後面跟一個或多個數字
13\d{9}匹配13後面跟9個數字(中國的手機號)
`\w+匹配一行的第一個單詞(或整個字符串的第一個單詞,具體匹配哪個意思得看選項設置)
想要查找數字,字母或數字,空白是很簡單的,因爲已經有了對應這些字符集合的元字符,但是如果你想匹配沒有預定義元字符的字符集合(比如元音字母a,e,I,o,u),應該怎麼辦?
很簡單,你只需要在中括號裏列出它們就行了,像[aeiou]就匹配任何一個英文元音字母,
[.?!]匹配標點符號(.或?或!)(英文語句通常只以這三個標點結束)。
我們也可以輕鬆地指定一個字符範圍,像[0-9]代表的含義與\d就是完全一致的:一位數字,同理[a-z0-9A-Z]也完全等同於\w(如果只考慮英文的話)。