正則表達式學習筆記


前言

之前學習其他知識時,經常見到正則表達式,一開始不以為然,后來見得多了,覺得這東西肯定挺叼的,有必要學一學了,因此從網上找了一些資料開始學習,去google搜一下,教程倒是蠻多的,但是不知道哪個易學些,走馬觀花式的看了一段時間,基本掌握了,但是學的不系統,有一天到張子陽的一篇博文,覺得寫的很好,就去看了看他的主頁,發現子陽兄也寫過正則表達式教程,懷着對子陽兄的崇敬之情,看的很帶勁呢,一下午就看完了,感覺棒棒的。

正則表達式是什么

它是用來准確查找文本的,或返回查找結果,或進行內容替換;反過來,它可以對輸入的信息進行格式驗證。

正則表達式學什么

正則表達式可以當一個工具來學,基本的、常用的會用即可,不常用的學了也會忘掉,本着這個目的,我將從用途不同對正則表達式的知識進行分類。

簡單匹配

匹配單個字符

重點學習“.”、“?”、“[ ]”、“\s”、“\d”、“\w”和“\”

  • “.”:匹配任意單個字符
  • “?”:匹配0個或1個特定字符(它的前一個字符)
  • “[ ]”:匹配幾個字符中的一個字符
  • “\s”:匹配空字符,包括空格、Tab、回車符、換行符,相當於[\f\n\r\t\v]
  • “\d”:匹配單個數字,相當於[0-9]
  • “\w”:匹配單個大小寫字母、數字、下划線,相當於[a-zA-Z0-9_]
  • “\”:轉義字符,匹配有特殊意義的字符,如“.”或“?”

此外,\s\d\w的反義匹配是\S\D\W,也就是匹配非空字符、非數字字符和非【大小寫字母、數字、下划線】字符

學會這些,基本的查找功能就可以搞定啦。

例子后續補充

中級匹配

匹配多個字符

重點學習“+”、“*”、“^”、“$”、“{ }”、“\b”

  • “+”:匹配1個或多個特定字符(它的前一個字符)
  • “*”:匹配0個或多個特定字符(它的前一個字符)
  • “^”:匹配文本首,用在“[ ]”中代表匹配反義詞,如[^0-9]匹配非數字
  • “$”:匹配文本末
  • “{ }”:匹配指定數目的特定字符(它的前一個字符)
  • “\b”:匹配字符邊界(分割單詞的邊界,下划線除外)
  • “\B”:與“\b”相反,匹配【非單詞】邊界(也就是字母或漢字)

例子后續補充

高級匹配

含有子模式和惰性模式的匹配

重點學習“( )”、“|”、“貪婪匹配與惰性匹配”

  • “( )”:將括號內的字符串當作一個整體來匹配,看作一個字符,如(good),文本中包含“good”時才匹配,“god”和“ood”都不會匹配到
  • “|”:“或”匹配,匹配兩個正則表達式中的任意一個,如“good|bad”,匹配包含good或bad,也可以用在“( )”中
  • 貪婪匹配:默認匹配模式。它會匹配盡可能多的字符。它首先看整個字符串,如果不匹配,對字符串進行收縮;遇到可能匹配的文本,停止收縮,對文本進行擴展,當發現匹配的文本時,它不着急將該匹配保存到匹配集合中,而是對文本繼續擴展,直到無法繼續匹配 或者 擴展完整個字符串,然后將前面最后一個符合匹配的文本(也是最長的)保存起來到匹配集合中。所以說它是貪婪的。
  • 惰性匹配:它會匹配盡可能少的字符,它從第一個字符開始找起,一旦符合條件,立刻保存到匹配集合中,然后繼續進行查找。所以說它是懶惰的。

下面是貪婪匹配與惰性匹配的字符差別:

例子后續補充

后記

這篇文章是我學習這篇教程的總結與思路整理,總結的也不太好,希望看到它的人可以從中學到,有什么問題歡迎討論~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM