re.findall(正則匹配的格式,匹配的對象)
只匹配開頭在多行模式中匹配每一行的開頭python
匹配的格式a或者b正則表達式
[a,b]匹配的格式a或者b若是ab爲多個值他會把裏面的東西打散unix
[^x]內容不等於xcode
a$ 匹配已a 結尾的對象
.
表明任意字符字符串
表明前面字符0-無窮大個string
表明前面字符1-無窮大個it
特殊序列符號 | 意義 |
---|---|
\A | 只在字符串開始進行匹配(多行字符串值匹配第一行) |
\Z | 只在字符串結尾進行匹配(多行字符串只匹配最後一行) |
\b | 匹配位於開始或結尾的空字符串 |
\B | 匹配不位於開始或結尾的空字符串 |
\d | 至關於[0-9] |
\D | 至關於[^0-9] |
\s | 匹配任意空字符:[\t\n\r\r\v] |
\S | 匹配任意非空字符:[^\t\n\r\r\v] |
\w | 匹配任意數字和字母:[a-zA-Z0-9] |
\W | 匹配任意非數字和字母:[^a-zA-Z0-9] |
括號裏面什麼到時候取什麼io
re.S的做用:table
不使用re.S時,則只在每一行內進行匹配,若是存在一行沒有,就換下一行從新開始,使用re.S參數之後,正則表達式會將這個字符串看作總體,在總體中進行匹配
import re a = """sdhellolsdlfsdfiooe: yy988989pythonafsf""" b = re.findall('hello(.*?)python',a) c = re.findall('hello(.*?)python',a,re.S) print (b) print(c) 輸出結果: b:[] c:['lsdlfsdfiooe:\nyy988989']
其餘參數
修飾符 | 描述 |
---|---|
re.I | 使匹配對大小寫不敏感 |
re.L | 作本地化識別(locale-aware)匹配 |
re.M | 多行匹配,影響 ^ 和 $ |
re.S | 使 . 匹配包括換行在內的全部字符 |
re.U | 根據Unicode字符集解析字符。這個標誌影響 \w, \W, \b, \B. |
re.X | 該標誌經過給予你更靈活的格式以便你將正則表達式寫得更易於理解 |
# match 和 search的區別,mathch從開頭開始匹配找一個,search搜索全部找第一個
定義某種搜索格式 res1 = re.compile('\d+') res1.findall(查找對象)等同於re.findall('\d+',查找對象)
就是字符串的split方法,區別是能夠使用正則表達式去替換
就是字符串的replace方法,區別是能夠使用正則表達式去替換
import re s = '豬八戒的媳婦是1高翠蘭,孫悟空的媳婦是2白骨精,唐僧的媳婦是3女兒國王,沙悟淨6沒有媳婦(py9的學生們)' print(re.sub('\d','',s)) print(re.subn('\d','',s)) # 除了會修改內容,還會返回修改了多少次 豬八戒的媳婦是高翠蘭,孫悟空的媳婦是白骨精,唐僧的媳婦是女兒國王,沙悟淨沒有媳婦(py的學生們) ('豬八戒的媳婦是高翠蘭,孫悟空的媳婦是白骨精,唐僧的媳婦是女兒國王,沙悟淨沒有媳婦(py的學生們)', 5)
語法 | 意義 | 說明 |
---|---|---|
"." | 任意字符 | |
"^" | 字符串開始 | '^hello'匹配'helloworld'而不匹配'aaaahellobbb' |
"$" | 字符串結尾 | 與上同理 |
"*" | 0 個或多個字符(貪婪匹配) | <*>匹配<\title>chinaunix</title> |
"+" | 1 個或多個字符(貪婪匹配) | 與上同理 |
"?" | 0 個或多個字符(貪婪匹配) | 與上同理 |
*?,+?,?? | 以上三個取第一個匹配結果(非貪婪匹配) | <*>匹配<\title> |
{m,n} | 對於前一個字符重複m到n次,{m}亦可 | a{6}匹配6個a、a{2,4}匹配2到4個a |
{m,n}? | 對於前一個字符重複m到n次,並取儘量少 | ‘aaaaaa’中a{2,4}只會匹配2個 |
"\" | 特殊字符轉義或者特殊序列 | |
[] | 表示一個字符集 | [0-9]、[a-z]、[A-Z]、[^0] |
"|" | 或 | A|B,或運算 |
(...) | 匹配括號中任意表達式 | |
(?#...) | 註釋,可忽略 | |
(?=...) | Matches if ... matches next, but doesn't consume the string. | '(?=test)' 在hellotest中匹配hello |
(?!...) | Matches if ... doesn't match next. | '(?!=test)' 若hello後面不爲test,匹配hello |
(?<=...) | Matches if preceded by ... (must be fixed length). | '(?<=hello)test' 在hellotest中匹配test |
(?<!...) | Matches if not preceded by ... (must be fixed length). | '(?<!hello)test' 在hellotest中不匹配test |