萬用字元:
*: 代表任何字串
?: 代表單個字元
.: 當前目錄
…:當前目錄的上一級目錄
[0-9]: 單個字元為0~9
[a-z]: 代表小寫的a-z
[a-z]: 代表大寫的a-z
[a-za-z]:同時代表大小寫的
[0-9a-za-z]:代表大小寫之外同時還包括0-9
[[:digit:]]:匹配任意數字
[[:upper:]]:匹配大寫字母
[[:lower:]]:匹配小寫字母
[[:space:]]:匹配任意個空格
#示例:
import globglob.glob(』./[0-9].*』)
[』./1.gif』, 『./2.txt』]
glob.glob(』*.gif』)[『1.gif』, 『card.gif』]
glob.glob(』?.gif』)[『1.gif』]
glob.glob(』**/*.txt』, recursive=true)[『2.txt』, 『sub/3.txt』]
glob.glob(』./**/』, recursive=true)[』./』, 『./sub/』]
import globglob.glob(』*.gif』)
[『card.gif』]
glob.glob(』.c*』)[』.card.gif』]
「」"import os
import glob
files1 = [file for file in os.listdir(』.』) if file.endswith(』.conf』)]
files2= glob.glob(』./*.conf』)
print(files1)
print(files2)
import re
# *************************match方法*************************8
# match嘗試從字串的起始位置開始匹配;
# - 如果起始位置沒有匹配成功, 返回none;
# - 如果起始位置匹配成功, 返回乙個物件, 通過group方法獲取匹配的內容;
# a match object, or none if no match was found.
aobj = re.match(r'we', 'wetoshello')
print(aobj)
print(aobj.group())
# \d 單個數字
# \d \d的取反 , 除了數字之外
bobj = re.match(r'\d', '1westos')
if bobj:
print(bobj.group())
bobj = re.match(r'\d', '_westos')
if bobj:
print(bobj.group())
# *****************************findall********************
# findall會掃瞄整個字串, 獲取匹配的所有內容;
res = re.findall(r'\d\d', '閱讀數為2 點讚數為10')
print(res)
# *************************search*******************8
# search會掃瞄整個字串, 只返回第乙個匹配成功的內容的sre物件;
# - 如果起始位置沒有匹配成功, 返回none;
# - 如果起始位置匹配成功, 返回乙個物件, 通過group方法獲取匹配的內容;
resobj = re.search(r'\d', '閱讀數為8 點讚數為10')
if resobj:
print(resobj.group())
.: 匹配除了\n之外的任意字元; [.\n]
\d: digit--(數字), 匹配乙個數字字元, 等價於[0-9]
\d: 匹配乙個非數字字元, 等價於[^0-9]
\s: space(廣義的空格: 空格, \t, \n, \r), 匹配單個任何的空白字元;
\s: 匹配除了單個任何的空白字元;
\w: 字母數字或者下劃線, [a-za-z0-9_]
\w: 除了字母數字或者下劃線, [^a-za-z0-9_]
import re
# 匹配數字
# pattern = r'\d'
pattern = r'[0-9]'
string = "hello_1$%"
print(re.findall(pattern, string))
# 匹配字母數字或者下劃線;
# pattern = r'\w'
pattern = r'[a-za-z0-9_]'
string = "hello_1$%"
print(re.findall(pattern, string))
# 匹配除了字母數字或者下劃線;
# pattern = r'\w'
pattern = r'[^a-za-z0-9_]'
string = "hello_1$%"
print(re.findall(pattern, string))
# .: 匹配除了\n之外的任意字元; [.\n]
print(re.findall(r'.', 'hello westos\n\t%$'))
1. 設計乙個正則來找出乙個字串序列中的10-59;pattern = r'[1-5][0-9]'
2. 設計乙個正則來過濾乙個字串序列中只包含兩個字元, 其中第乙個字母是大寫的a或者b或者c;pattern = r'[abc].'
表示分組
| : 匹配| 左右任意乙個表示式即可;
(ab): 將括號中的字元作為乙個分組
\num: 引用分組第num個匹配到的字串
(?p): 分組起別名
(?p=name) : 引用分組的別名
import re
print(re.findall(r'westos|hello', "hellowestos"))
# 進行分組的時候, findall方法只返回分組裡面的內容;
# group方法會返回匹配的所有內容;
print(sreobj.group())
# groups方法返回分組裡面的內容;
print(sreobj.groups())
# 需求: 獲取標籤裡面的文字, 並判斷標籤是否成對出現?
htmlstr = "welcome to westos!
"pattern = r'<(\w+)><(\w+)>(.+)'
print(re.findall(pattern, htmlstr))
print(re.findall(pattern, htmlstr)[0][2])
# 需求: 分組起別名?
htmlstr = "welcome to westos!
"pattern = r'<(?p\w+)><(?p\w+)>(?p.+)' \
r''print(re.findall(pattern, htmlstr))
sreobj = re.search(pattern, htmlstr)
if sreobj:
print(sreobj.group())
print(sreobj.groups())
print(sreobj.groupdict())
print(sreobj.groupdict()['text'])
正規表示式 正規表示式 總結
非負整數 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...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...