day 0802 正規表示式

2021-09-25 19:45:50 字數 4260 閱讀 1858

正規表示式,又稱規則表示式**。**(英語:regular expression,在**中常簡寫為regex、regexp或re),電腦科學的乙個概念。正規表示式通常被用來檢索、替換那些符合某個模式(規則)的文字。正規表示式,又稱為

使用場景

在python中使用正則需要匯入re

import re
首先我們來看兩個例子來體驗一下正規表示式的威力吧:

### 引入案例1

比如,已知乙個列表:

​ li = [「chinese」, 「china」, 「english」, 「britain」, 「canada」, 「new zealand」]

找出以ch開頭的字串。

# 法1

li =

["chinese"

,"china"

,"english"

,"britain"

,"canada"

,"new zealand"

]lt =

for i in li:

if i[0:

2]=="ch"

:print

(lt)

# 法2

li =

["chinese"

,"china"

,"english"

,"britain"

,"canada"

,"new zealand"

]print

([i for i in li if i[0:

2]=="ch"

])

import re

a='ab23df5g67'

m=r'[0-9]+'

num=re.findall(m,a)

print(num)

-----》['23', '5', '67']

在來看個例子:

```python

張偉 86-14870293148 \n

王偉 +86-13285654569 \n

王芳 15856529115 \n

李偉 13022816340 \n

王秀英 (86)14785720656 \n

李秀英 17201444672 \n

李娜 15682812452 \n

張秀英 14326967740 \n

劉偉 15146435743 \n

張敏 (86)-17712576838 \n

李靜 86 14295083635 \n

張麗 (+86) 13722348123 \n

王靜 17587918887 \n

王麗 15493106739 \n

李強 13786842977 \n

張靜 86-15542304386 \n

李敏 15642387356 \n

王敏 18627216756 \n

王磊 17206185726 \n

李軍 17857426238 \n

劉洋 17345352790 \n

```對於這樣一段字串,現在讓你做如下處理:

1.提取所有 11 位數字**號碼

2.提取所有 18 或 13 開頭的**號碼

3.提取所有「王」姓同學的名字

4.提取所有「張」姓同學的**號碼

5.重新排版,排版成統一的格式,去掉國家區號。

字元功能

.匹配任意乙個字元(除了\n)

匹配【】中列舉的字元

\d匹配數字(0-9)

\d匹配非數字(與\d取反)

\w匹配字,a-z,a-z,0-9,_

\w匹配字,\w取反

\s匹配空白字元,比如空格\tab

\s匹配非空白字元,\s取反

demo:

m=re.match('1[35678]\d','17357112858')

print(m.group())

17357112858

m=re.match('.','c')

print(m.group())

cm=re.match('.','asdas')

print(m.group())

am=re.match('s','asdas')

print(m.group())

traceback (most recent call last):

file "d:/pycharm/pycharm 2018.1/untitled/start study/2019 8/teach_class/day 0802 regex.py", line 12, in print(m.group())

attributeerror: 'nonetype' object has no attribute 'group'

m=re.match('a','asdas')

print(m.group())

a

m=re.match('c','city')

print(m.group())

m=re.match('c','city')

print(m.group())

m=re.match('[cc]','city')

print(m.group())

m=re.match('[cc]','city')

print(m.group())cc

cc

match,只匹配開頭是搜尋字元的字串,並將其返回。

import re

dir(re)

[『a』, 『ascii』, 『debug』, 『dotall』, 『i』, 『ignorecase』, 『l』, 『locale』, 『m』, 『multiline』, 『match』, 『pattern』, 『regexflag』, 『s』, 『scanner』, 『t』, 『template』, 『u』, 『unicode』, 『verbose』, 『x』, 『_maxcache』, 『all』, 『builtins』, 『cached』, 『doc』, 『file』, 『loader』, 『name』, 『package』, 『spec』, 『version』, 『_cache』, 『_compile』, 『_compile_repl』, 『_expand』, 『_locale』, 『_pickle』, 『_special_chars_map』, 『_subx』, 『compile』, 『copyreg』, 『enum』, 『error』, 『escape』, 『findall』, 『finditer』, 『fullmatch』, 『functools』, 『match』, 『purge』, 『search』, 『split』, 『sre_compile』, 『sre_parse』, 『sub』, 『subn』, 『template』]

引數說明:

re.group([group1,…])字串或者元組

re.groups([default=none]) tuple

作用:以元組形式返回全部分組截獲的字串。類似呼叫re.group(1,2,…,last)

如果沒有截獲字串的組,預設返回none

re.search(pattern,str,flags=0)

字元功能^

匹配字串開頭

$匹配字串的結尾

\b匹配乙個單詞的邊界

\b匹配非單詞邊界

##匹配分組

字元功能

|匹配左右任意乙個表示式

(ab)

將括號中的字元作為乙個分組

\num

引用分組num匹配到的字串

(?p)

分組起別名

(?p=name)

引用別名為name分組匹配到的字串

| | 匹配左右任意乙個表示式 |

| (ab) | 將括號中的字元作為乙個分組 |

| \num | 引用分組num匹配到的字串 |

| (?p) | 分組起別名 |

| (?p=name) | 引用別名為name分組匹配到的字串 |

0802 正規表示式

python正規表示式的基礎 正規表示式,又稱規則表示式 英語 regular expression,在 中常簡寫為regex regexp或re 電腦科學的乙個概念。正規表示式通常被用來檢索 替換那些符合某個模式 規則 的文字。在python中使用正則需要匯入re包 import re首先我們來看...

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

day21正規表示式

什麼是正規表示式 正規表示式 用於匹配規律規則的表示式,正規表示式最初是科學家對人類神經系統的工作原理的早期研究,現在在程式語言中有廣泛的應用。正則表通常被用來檢索 替換那些符合某個模式 規則 的文字。正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元 及這些特定字元的組合,組成乙...