import re(正則表達式)


例題:URL

1 import re
2 def url(string: str) -> list :
3 # 含括號匹配時不作處理僅返回括號內容
4 # 在括號前假設?:后返回所有元素
5 result = re.findall(r'(?:https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]', string)
6 return result
7 st = input()
8 print(url(st))

 

 


 

r:帶'r' 前綴的字符串,反斜杠無效。 如 r"\n" 表示包含 '\' 和 'n' 兩個字符的字符串,而 "\n" 則表示只包含一個換行符的字符串

 Python 正則表達式 | 菜鳥教程 (runoob.com)

(2條消息) python——正則表達式(re模塊)詳解_guo_qingxia的博客-CSDN博客_python re

re.findall函數


在字符串中找到正則表達式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。

1 舉例:
2 
3 import re
4 ret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")
5 print(ret)
6 結果:
7 
8 ['9999', '7890', '12345']

 

 

匹配單個字符


字符 功能 位置
. 匹配任意1個字符(除了\n)
[ ] 匹配[ ]中列舉的字符
\d 匹配數字,即0-9 可以寫在字符集[...]中
\D 匹配⾮數字,即不是數字 可以寫在字符集[...]中
\s 匹配空⽩,即空格,tab鍵 可以寫在字符集[...]中
\S 匹配⾮空⽩字符 可以寫在字符集[...]中
\w 匹配單詞字符,即a-z、A-Z、0-9、_ 可以寫在字符集[...]中
\W 匹配⾮單詞字符 可以寫在字符集[...]中
\w \w 匹配單詞字符,即a-z、A-Z、0-9、_
\W 匹配⾮單詞字符
————————————————

 

匹配多個字符


字符 功能 位置 表達式實例 完整匹配的字符串
* 匹配前⼀個字符出現0次或者⽆限次,即可有可⽆ 用在字符或(...)之后 abc* abccc
+ 匹配前⼀個字符出現1次或者⽆限次,即⾄少有1次 用在字符或(...)之后 abc+ abccc
? 匹配前⼀個字符出現1次或者0次,即要么有1次,要么沒有 用在字符或(...)之后 abc? ab,abc
{m} 匹配前⼀個字符出現m次 用在字符或(...)之后 ab{2}c abbc
{m,n} 匹配前⼀個字符出現從m到n次,若省略m,則匹配0到n次,若省略n,則匹配m到無限次 用在字符或(...)之后 ab{1,2}c abc,abbc

 

flags : 可選,表示匹配模式,比如忽略大小寫,多行模式等,具體參數為:

    1. re.I 忽略大小寫
    2. re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依賴於當前環境
    3. re.M 多行模式
    4. re.S 即為 . 並且包括換行符在內的任意字符(. 不包括換行符)
    5. re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依賴於 Unicode 字符屬性數據庫
    6. re.X 為了增加可讀性,忽略空格和 # 后面的注釋

匹配開頭結尾

字符 功能
^ 匹配字符串開頭
$ 匹配字符串結尾


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM