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