close

Regular Expression:正規表達法(什麼東東阿!有時候英文直翻真是搞死人)—資料內容之規則表達公式(有沒有好一點呢?)介紹

Regular Expression用途:

是一種表示〝具有特定內容〞字串的表達公式,可用來比對及搜尋合乎規則的資料 , 一一找出或一次性的搜尋,後續運用資料處理的方法儲存或處理

Regular Expression的組成:

具有特定內容〞即為範本(Pattern),範本由普通字元(ASCII)、特殊字元(Metacharacter)及數量定義詞(Quantifier)組成。

其格式為普通字元|特殊字元 ]數量定義詞

下列說明很簡潔也很清楚,多看幾次再做練習

普通字元

普通字元代表的就是字元本身。因此"A"對應到字串就是"A""a"

數量定義詞(Quantifier)─定義前一個字元的數量

Char

Description

?

一個字元或沒有

*

任意數目的字元或沒有

+

一個字元或以上的字元

{N}

N個字元

{N,}

至少N個字元

{N, M}

至少N個字元至多M個字元

特殊字元(Metacharacter)─Match Metacharacter

Char

Description

.

代表任一個字元

[...]

代表字元集中的任一字元, 例如 [abc] 可對應 a, b c
連續字元的定義可用"-", 例如 [a-d] = [abcd]

[^...]

代表字元集中的任一字元, 例如 [^abc] 將不對應 a, b c

特殊字元(Metacharacter)─Position Metacharacter

Char

Description

^

代表字串的開頭

$

代表字串的結尾

特殊字元(Metacharacter)─Shorthand Metacharacter

Char

Description

\d

對應0-9的任一數字(= [0-9])

\D

對應非數字的任一字元(=[^0-9])

\f

對應換頁字元

\n

對應換行字元

\r

對應歸正字元

\s

對應空白字元,對等於 [ \f\n\r\t\v]

\S

對應非空白字元,對等於 [^ \f\n\r\t\v]

\t

對應 tab字元

\v

對應垂直 tab字元

\w

對應任何文數字元包括"_",對等於 [a-zA-Z0-9_]

\W

對應任何非文數字元,對等於 [^a-zA-Z0-9_]

特殊字元(Metacharacter)─Other Metacharacter

Char

Description

|

邏輯 "Or"

(pattern)

使用括號將pattern分組並提供記憶的功能,提供往後運算時再存取被括住的運算式功能。當有許多括號在pattern中使用時,被括住的運算式由左至右,可依序用$1$2‧‧‧$9存取。例如,"(a(bc)(d))" 運算式,被括號的運算式將有如下的對應$1="abcd"$2="bc"$3="d"

$1 .. $9

依序對應pattern運算式中被括號刮住的部分

                     
 

 

首先推薦學習以下網頁後有個概念:
Regular Expression
介紹,把符號都說得算很清楚!
https://atedev.wordpress.com/2007/11/23/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%A4%BA%E5%BC%8F-regular-expression/

互動式學習。直接讓你下去練習,先做完第一階段15題,大概就稱為有一定的基礎了

https://regexone.com/
python
re的方法運用介紹,這裡看看比較實戰
https://regexone.com/references/python
有了初步辨識能力後,想要進階更具體的落實概念,可以自導自演利用此網站讓自己對於定義更清楚,同時若有測試資料用的網頁,針對想找到某個規則的正則又有測式資料來這裡就對了。
https://regex101.com/

arrow
arrow
    創作者介紹
    創作者 阿丹 的頭像
    阿丹

    python愛玩客

    阿丹 發表在 痞客邦 留言(0) 人氣()