正規表示式30分鐘入門教程

2021-06-23 07:53:59 字數 3883 閱讀 4264

30分鐘內讓你明白正規表示式是什麼,並對它有一些基本的了解,讓你可以在自己的程式或網頁裡使用它。

最重要的是——請給我30分鐘, 如果你沒有使用正規表示式的經驗,請不要試圖在30秒內入門——除非你是超人 :)

別被下面那些複雜的表示式嚇倒,只要跟著我一步一步來,你會發現正規表示式其實並沒有你 想像中的那麼困難。當然,如果你看完了這篇教程之後,發現自己明白了很多,卻又幾乎什麼都記不得,那也是很正常的——我認為,沒接觸過正規表示式的人在看 完這篇教程後,能把提到過的語法記住80%以上的可能性為零。這裡只是讓你明白基本的原理,以後你還需要多練習,多使用,才能熟練掌握正規表示式。

除了作為入門教程之外,本文還試圖成為可以在日常工作中使用的正規表示式語法參考手冊。就作者本人的經歷來說,這個目標還是完成得不錯的 ——你看,我自己也沒能把所有的東西記下來,不是嗎?

清除格式 文字格式約定:專業術語

元字元/語法格式

正規表示式

正規表示式中的一部分(用於分析)

對其進行匹配的源字串

對正規表示式或其中一部分的說明

隱藏邊注 本文右邊有一些注釋,主要是用來提供 一些相關資訊,或者給沒有程式設計師背景的讀者解釋一些基本概念,通常可以忽略。

字元是計算機軟體處理文字時最基本的單位,可能是字母,數字, 標點符號,空格,換行符,漢字等等。字串是0個或更多個字元的序列。文字也就是文字,字串。說某個字串匹配某個正則表達 式,通常是指這個字串裡有一部分(或幾部分分別)能滿足表示式給出的條件。

在編寫處理字串的程式或網頁時,經常會有查詢符合某些複雜規則的字串的需要。正規表示式就 是用於描述這些規則的工具。換句話說,正規表示式就是記錄文字規則的**。

很可能你使用過windows/dos下用於檔案查詢的萬用字元(wildcard), 也就是*和?。如果你想查詢某個目錄下的所 有的word文件的話,你會搜尋*.doc。在這裡,*會被解釋成任意的字串。和萬用字元類似,正規表示式也是用來進行文字匹配的工具,只不過比起萬用字元,它能更精 確地描述你的需求——當然,代價就是更複雜——比如你可以編寫乙個正規表示式,用來查詢所有以0開頭,後面跟著 2-3個數字,然後是乙個連字型大小「-」,最後是7或8位數字的字串(像010-12345678或0376-7654321)。

學習正規表示式的最好方法是從例子開始,理解例子之後再自己對例子進行修改,實驗。下面給出了不少簡單的例子,並對它們作了詳細的說明。

假設你在一篇英文**裡查詢hi,你可以使用正規表示式hi。

這幾乎是最簡單的正規表示式了,它可以精確匹配這樣的字串:由兩個字元組成,前乙個字元是h,後 乙個是i。通常,處理正規表示式的工具會提供乙個忽略大小寫的選項,如果選中了這個選項,它可以匹配hi,hi,hi,hi這四種情況中的任意一種。

不幸的是,很多單詞裡包含hi這兩個連續的字元,比如him,history,high等等。用hi來查詢的話,這裡邊的hi也會被找出來。如果要精確地查詢hi這個單詞的 話,我們應該使用\bhi\b。

\b是正規表示式規定的乙個特殊**(好吧,某些人叫它元字元,metacharacter),代表著單詞的開頭或結尾,也就 是單詞的分界處。雖然通常英文的單詞是由空格,標點符號或者換行來分隔的,但是\b並 不匹配這些單詞分隔字元中的任何乙個,它只匹配乙個位置。

如果需要更精確的說法,\b匹配這樣的位置:它的前乙個字元 和後乙個字元不全是(乙個是,乙個不是或不存在)\w。

假如你要找的是hi後面不遠處跟著乙個lucy,你應該用\bhi\b.*\blucy\b。

這裡,.是另乙個元字元,匹配除了換行符以 外的任意字元。*同樣是元字元,不過它代表的不是字元,也不是位置,而是數量——它 指定*前邊的內容可以連續重複使用任意次以使整個表示式得到匹配。因此,.*連在一起就意味著任意數量的不包含換行的字元。現在\bhi\b.*\blucy\b的意思就很明顯了:先是乙個單詞 hi,然後是任意個任意字元(但不能是換行),最後是lucy這個單詞。

換行符就是'\n',ascii編碼為10(十六進製制0x0a)的字元。

如果同時使用其它元字元,我們就能構造出功能更強大的正規表示式。比如下面這個例子:

0\d\d-\d\d\d\d\d\d\d\d匹配這樣的字串:以0開頭,然後是兩個數字,然後是乙個連字型大小「-」,最後是8個數字(也就是中國的**號碼。當然,這個例子只 能匹配區號為3位的情形)。

這裡的\d是個新的元字元,匹配一位數字 (0,或1,或2,或……)。-不是元字元,只匹配它本身——連字元(或者減號,或 者中橫線,或者隨你怎麼稱呼它)。

為了避免那麼多煩人的重複,我們也可以這樣寫這個表示式:0\d-\d。 這裡\d後面的()的意思是前面\d

必須連續重複匹配2次(8次)。

其它可用的測試工具:

如果你不覺得正規表示式很難讀寫的話,要麼你是乙個天才,要麼,你不是地球人。正規表示式的語法很令人頭疼,即使對經常使用它的人來說也是 如此。由於難於讀寫,容易出錯,所以找一種工具對正規表示式進行測試是很有必要的。

下面是regex tester執行時的截圖:

先是熱身。在房內來回走上幾分鐘,讓全身的血液迴圈起來;接下來是一分鐘的高抬腿運動,要將膝蓋抬到腰部;接下來是一分鐘的轉身運動,雙腳開啟與肩同寬,上半身左右來回轉動,動作幅度不要太大,以免扭傷了腰肌腰椎。

第一步是力量蹲起訓練。動作要領是腹部肌肉用力,背要挺直,不要佝僂著腰,雙腳開啟與肩同寬,類似扎馬步。下蹲時大腿要與地面平行,膝蓋彎曲不能超過腳趾,然後再起身。運動時配合手的動作,起身時把手舉過頭頂,下蹲時再將手移回到胸前。這一運動涉及到全身的肌肉,主要鍛鍊的是臀部、四肢和腹部的肌肉。

第二步是後撤步轉體運動。直立,右腳後撤大約1公尺,上半身向右轉10次。然後換另一邊,左腿後撤身體再向左轉。這一動作鍛鍊的是四肢、小腿和臀部的肌肉以及斜肌。假如你覺得很難保持平衡,可以適當縮小後撤的步幅。

第三步是側撐運動。身體側躺,用手肘支撐,前臂觸地同身體垂直,然後將臀部抬起,從腋窩到腳踝成一條直線,整個身體只有手肘和腳部側面同地面接觸。每側支撐30秒鐘。如果實在撐不住,也可以在15秒時稍作休息。

最後一步是俯臥撐。面朝地板,背部挺直,用前臂和前腳掌支撐整個身體,腹部和臀部肌肉用力,持續30秒鐘。

室內健身方法二

對於喜好長跑的人來說,大風天氣不能到室外跑步總是一件憾事,不過,運動專家指出,在室內進行原地跑步鍛鍊的效果也很不錯。

赤足原地跑:地上放一塊舊洗衣板,或在舊塑料澡盆裡鋪上一些小石子,光腳在上面慢速原地跑,天冷可穿軟底鞋或厚襪子。人的腳底有很多穴位和神經末梢,以石子或洗衣板的凸出部位刺激腳底,有較好的健身效果。

原地高抬腿:站立,雙臂屈肘,雙手握虛拳,雙腳輪流提起原地跑,雙臂隨之自然擺動,可根據身體狀況,選擇提腿的高度和跑步的速度。此法可增強平衡能力,強健腿肌。

旋轉慢步跑:先在原地練習順時針和逆時針旋轉,不求快速只求勻速。一般能習慣於順、逆時針方向各轉3圈即可在跑步過程中不時旋轉,並逐步增加旋轉的速度及圈數。旋轉慢跑可產生一種離心力,可明顯改善全身血液迴圈。

踮腳退步跑:先測量來回的步數,然後背向目標,目視前方,頭正身直,雙手握虛拳置於腰間,踮起雙腳,小跑步向後退,同時擺動雙臂,默數步數。此法對腰肌勞損、腰椎病及腰、腿、腳部骨質增生等患者很有益處。

室內健身方法三

在室內跳健身舞、做韻律操、跑步機或踏步機、做瑜伽、跳繩、呼啦圈、仰臥起坐等等都可以鍛鍊身體。 

1.頸部運動:分腿站立,頭前曲、後仰、復位、左轉、右轉、向環繞、向左環繞,

迴圈做4次。 

2.繞臂:分腿站立,兩臂上舉,向前繞環4圈,向後繞環4圈,做2次。 

3.擴胸:分腿站立,兩臂胸前平曲後振、展臂後振,做4次。 

4.體轉運動:左右各4次,做2組。 

5.體前曲:8次。 

6.體回環:以腰部為軸,左右各環繞一周,做2次。 

7.踢腿:前後各10次,做 2組。 

8.前弓步壓腿:左右各4次,做2組。 

9.側壓腿:左右各4次,做2組。 

10.下蹲起立:12-20次。 

11.轉足繞手腕:各12次。 

12.仰臥起坐:8-15次,做3組。 

13.俯臥撐:8-12次,做2組。 

14.放鬆活動3分鐘。 

正規表示式30分鐘入門教程 2

有時需要查詢不屬於某個能簡單定義的字元類的字元。比如想查詢除了數字以外,其它任意字元都行的情況,這時需要用到反義 表3.常用的反義 語法 說明 w 匹配任意不是字母,數字,下劃線,漢字的字元 s 匹配任意不是空白符的字元 d 匹配任意非數字的字元 b 匹配不是單詞開頭或結束的位置 x 匹配除了x以外...

PHP正規表示式30分鐘入門教程

正規表示式30分鐘入門教程 三個常用的知識點 1 惰性匹配 正則引擎預設是貪婪的,若要最少重複的話,需要用到惰性匹配符 懶惰限定符 語法 說明 重複任意次,但盡可能少重複 重複1次或更多次,但盡可能少重複 重複0次或1次,但盡可能少重複 重複n到m次,但盡可能少重複 重複n次以上,但盡可能少重複 參...

正規表示式10分鐘入門教程

編寫驗證規則最流行和最簡單的方法就是正規表示式了,但唯一的乙個問題是正規表示式的語法太隱晦了,讓人蛋疼無比。很多開發者為了在專案中應用複雜的驗證,經常要使用一些小抄來記住正則式的複雜語法和各種常用命令。在這篇文章中,我將試圖讓大家明白什麼是正規表示式,以及如何更輕鬆地學習正規表示式。正規表示式可以幫...