快速学习正则表达式
其實百度百科上的正則表達式已經很詳細了。
正則表達式的要點在于匹配和等價
下面內容引用自百度百科,基本的等價條件:
> ?等價于匹配長度{0,1} *等價于匹配長度{0,} +等價于匹配長度{1,} \d等價于[0-9] \D等價于[^0-9] \w等價于[A-Za-z_0-9] \W等價于[^A-Za-z_0-9]。 常用運算符與表達式: ^ 開始 () 域段 [] 包含,默認是一個字符長度 [^] 不包含,默認是一個字符長度 {n,m} 匹配長度 . 任何單個字符(\. 字符點) | 或 \ 轉義 $ 結尾 [A-Z] 26個大寫字母 [a-z] 26個小寫字母 [0-9] 0至9數字 [A-Za-z0-9] 26個大寫字母、26個小寫字母和0至9數字 , 分割 . 分割語法: [A,H,T,W] 包含A或H或T或W字母 [a,h,t,w] 包含a或h或t或w字母 [0,3,6,8] 包含0或3或6或8數字 語法與釋義: 基礎語法 "^([]{})([]{})([]{})$" 正則字符串 = "開始([包含內容]{長度})([包含內容]{長度})([包含內容]{長度})結束" ?,*,+,\d,\w 這些都是簡寫的,完全可以用[]和{}代替,在(?:)(?=)(?!)(?<=)(?<!)(?i)(*?)(+?)這種特殊組合情況下除外。 示例一: All strings of lowercase letters that begin and end in a(以a開頭和結尾的所有小寫字母字符串。). a+([a-z]*) a+題目分析 題目要求字符串全部小寫,同時以a開頭a結尾,那么首尾必須有a出現,這里我們用a+表示 +是一個限定符,代表至少出現一次。 要表達所有字符串,則必須出現+或*,這是無上限的限定符,小寫字母用[a-z]表示。 字符串可能是aa,中間不一定有別的字符串,所以確定[a-z]后面是*而不是+,*代表0次及以上 示例二: All strings of digits that contain no leading zeros(不包含前導零的所有數字字符串) 什么是leading zeros(前導零):前導零 是一種 顯示數字前面的0的一種格式。 比如 我們要求是 999,999.999的格式顯示數字 但是如果沒有 這么大的數字 會顯示 222.340 因為約束了小數點后面的位數,所以沒有3位也會顯示3位. 但是前面可能沒有這么多位數 就不會顯示了 而前導零就是要顯示出前面的題目分析 要求沒有前導零,即如果一個數的整數部分不為0,那么它的整數部分第一位不能為0首先考慮整數字符串 [1-9][0-9]* 再考慮到可能有小數 [1-9][0-9]*(\.)?[0-9]* 再考慮到可能有正負 (+|-)?[1-9][0-9]*(\.)?[0-9]* 示例三: All strings of digits such that all the 2’s occur before all the 9’s(所有的數字串,使所有2出現在所有9之前)這道題思路和前面的類似,關鍵在于2必須在9之前 把數字分為不包含2[0|1|3|4|5|6|7|8|9],不包含9[0|1|2|3|4|5|6|7|8|9]以及 太復雜的情況下可以定義變量 nat1 = [0|1|3|4|5|6|7|8|9] nat2 = [0|1|2|3|4|5|6|7|8] 由于2必須在9之前,那么nat1放最后,nat2放前面即可 nat2+nat1+總結
- 上一篇: 程序员,35岁是职业发展的转折点 (1
- 下一篇: dry的原理_速干面料的原理