电竞比分网-中国电竞赛事及体育赛事平台

分享

只需十分鐘,淺識正則表達式

 L羅樂 2019-04-13

根據百度百科的解釋,正則表達式的概念是:對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達對字符串的一種過濾邏輯。

emmmm,看完這一大堆文字,表示好暈哦,還是不能理解??!

但是,正則表達式對數據處理來說非常重要!數據的清洗或網頁爬蟲中解析數據都用得上它。

因為它有以下優(yōu)點:

(1)可以簡化代碼,實現起來更加簡便;

(2)處理字符串的時候更容易理解;

(3)其速度比自己寫邏輯代碼要快。

(⊙o⊙)…有什么通俗易懂的解釋可以讓新手快速掌握這個名詞的精髓呢???

簡單來說,正則表達式就是設定一個字符串規(guī)則,然后幫助我們判斷某個字符串是不是符合這個模式,也可以根據該規(guī)則提取我們需要的數據。

這么解釋,是不是容易理解多了,但是沒有事例結合還是一知半解,下面讓我們利用正則表達式做一個簡單的演示:

正則表達式語法

^     匹配字符串開頭

$     匹配字符串末尾

例如,'^abc':匹配以'abc'開頭的字符串;'abc$':匹配以'abc'結尾的字符串;

re*    匹配0個或多個的字符

re   匹配1個或多個的字符

re?   匹配0個或1個由前面的正則表達式定義的片段,非貪婪方式

例如,'ab*':匹配字符串a和0個或多個b組成的字符串('a'、'ab'、'abb'......)

            'ab ':匹配字符串a和1個或多個b組成的字符串('ab'、'abb'......)

            'ab?':匹配字符串a和0個或1個b組成的字符串

匹配任意字符串,除了換行符

[abc]  匹配單個的字符a或b或c

[^abc]  匹配除了a,b,c之外的字符

\w  匹配字母數字及下劃線

\W   匹配非字母數字及下劃線

\s  匹配任意空白字符,等價于[\t\n\r\f]

\S 匹配任意非空字符

\d  匹配任意數字

\D  匹配任意非數字

。。。

這么多語法,這也太暈了吧,不要著急,根據下面這個圖片,在使用時慢慢查閱,以后熟練了就好啦。

正則表達式實例

看了這么多的語法,頭暈腦脹,到底怎么才能構建一個模式來匹配字符串呢?比如,現在要求我們從一大堆字符串中提取出需要的數據:郵箱地址。這該怎么辦??

很顯然,郵箱地址一般是這樣的:

xiaobai@qq.com

根據前面提到的語法,我們可以定義這樣一個規(guī)則:

^\w @\w \.[com,cn,net]{1,3}$

其中\(zhòng)w表示單詞字符,等價于[A-Za-z0-9_],匹配字母數字及下劃線

表示匹配1個或多個的字符

\w 代表匹配字符[A-Za-z0-9_]一次或多次的組合字符串

\.的含義是將'.'轉義,因為'.'本身也是語法

{1,3}表示匹配前一個字符1-3次,至少1次,至多3次

[com,cn,net]字符集,表示匹配其中任意一個字符

下面用Python代碼簡單看一下演示,首先導入正則表達式的庫re模塊,再定義字符串規(guī)則pattern,如果匹配成功,則輸出YES,反之則沒有輸出。

具體的Python正則表達式大法,還聽下回分解!

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多