在學習爬蟲的過程中我們需要從網頁爬取資料,然後在過濾資料,最後儲存資料。其中過濾資料的時候我們需要提取這個網頁中的某一部分而非全部,此時我們就要通過正規表達式去過濾,下面我通過個人的學整理了一些基礎而且常見的正規表達式。
操作符 | 說明 | 執行個體 |
. | 表示單個字元 | |
[ ] | 字元集,對單個字元給出取值範圍 | [abc]表示a、b、 C,[a-z]表示a到z單個字元 |
* | 前一個字元0次或無限次出現 | abc*表示ab、abc、abcc、 abccc等 |
+ | 前一個字元1次或無限次出現 | abc+表示abc、 abcc、 abccc等 |
? | 前一個字元0次或1次出現 | abc?表示ab. abc |
| | 左右表達式任意-一個 | abc|def表示abc、 def |
{m} | 前一個字元m次 | ab{2}c表示abbc |
{m,n} | 前一個字元出現m至n次(含n) | ab{1,2}c表示abc、abbc |
^ | 比對字元串開頭 | ^abc表示abc且在一個字元串的開頭 |
$ | 比對字元串結尾 | abc$表示abc且在一個字元串的結尾 |
( ) | 分組标記,内部隻能使用|操作符 | (abc )表示abc , (abc |def)表示abc、def |
\d | 數字,等價于[0-9] | |
\w | 單詞字元,等價于[A-Za-z0-9_ ] |
以上是一些操作符的基礎介紹,這篇文章有相關的用法介紹:正規表達式從入門到實戰
這裡列舉一部分常用的表達式:
一、校驗數字的表達式
1. 數字:^[0-9]*$
2. n位的數字:^\d{n}$
3. 至少n位的數字:^\d{n,}$
4. m-n位的數字:^\d{m,n}$
5. 零和非零開頭的數字:^(0|[1-9][0-9]*)$
6. 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
7. 帶1-2位小數的正數或負數:^(\-)?\d+(\.\d{1,2})?$
8. 正數、負數、和小數:^(\-|\+)?\d+(\.\d+)?$
9. 有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$
10. 有1~3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$
11. 非零的正整數:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
12. 非零的負整數:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
13. 非負整數:^\d+$ 或 ^[1-9]\d*|0$
14. 非正整數:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15. 非負浮點數:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
16. 非正浮點數:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
17. 正浮點數:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
18. 負浮點數:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
19. 浮點數:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
還有很多表達式,可以參考這篇文章:史上最全常用正規表達式大全