正則表達式

正則表達式html

是什麼?  經過一個規則,來從一段字符串中找到符合規則的內容/判斷某段字符串是否符合規則正則表達式

有什麼用?瀏覽器

註冊頁/網頁上 要求你輸入一個信息 判斷你輸入的信息是否格式正優化

爬取數據 從網頁上把代碼以字符串的形式下載回到內存,提取這個大字符串中我想要的內容了spa

正規規則code

1.字符組    約束字符中某一個字符位置上的值是什麼,只要是出如今字符組中的內容都算匹配到了htm

2.'[3-9]'  從小到達的順序究竟是根據 asc碼的順序來的對象

3.匹配數字  [0-9] 匹配字母[A-Za-z]   匹配數字和字母[0-9a-zA-Z]blog

 

 

元字符:索引

元字符 匹配內容
. 匹配除換行符意外的任意字符
\w 匹配字母或數字或下劃線
\s 匹配任意的空白符
\d 匹配數字
\n 匹配一個換行符
\t 匹配一個製表符
\b 匹配一個單詞的結尾
^ 匹配字符串的開始
$ 匹配字符串的結尾
\W 匹配非字母或數字或下劃線
\D 匹配非數字
\S 匹配非空白符
a|b 匹配字符a或字符b
() 匹配括號內的表達式,也表示一個組
[...] 匹配字符組中的字符
[^...] 匹配除了字符組中字符的全部字符

 

 

 

 

 

 

 

 

 

 

 

 

量詞 :

量詞 用法說明
* 重複零次或者更屢次
+ 重複一次或更屢次
? 重複零次或一次
{n} 重複n次
{n,} 重複n次或更屢次
{n,m} 重複n到m次

 

 

 

 

 

 

 

 

 findall 和 分組的問題
import re
# ret = re.findall('\d+(?:\.\d+)?','1.2345+4.3')
# ?:寫在一個分組的最開始,表示在findall方法中取消這個分組的優先級
# 1.2345  4.3
# .2345   .3
# print(ret)
# ret= re.search('\d+(\.\d+)?','1.2345+4.3')
# print(ret.group())

# ret = re.findall('www.(?:baidu|oldboy).com', 'www.oldboy.com')
# print(ret)

# search
# ret = re.match('\d+', 'hello,alex3714')
# print(ret)

# 'aa|bb'.split('|')
# split中若是帶有分組,會在分割的同時保留被分割內容中帶分組的部分
# ret = re.split('(\d\d)','alex83wusir38egon20')
# print(ret)

# ret = re.sub('\d+','sb','alex83wusir38egon20',2)
# print(ret)

# ret = re.subn('\d+','sb','alex83wusir38egon20')
# print(ret)

# 節省時間
# obj = re.compile('\d{3}')  #將正則表達式編譯成爲一個 正則表達式對象,規則要匹配的是3個數字
# print(obj)
# ret = obj.search('abc123eeee') #正則表達式對象調用search,參數爲待匹配的字符串
# print(ret.group())
# ret = obj.search('abc444eeee') #正則表達式對象調用search,參數爲待匹配的字符串
# print(ret.group())

# finditer
# 迭代功能的
# findall

# 節省空間的
# ret = re.finditer('\d+','12aas14jsk38947cjhxj83')
# print(ret)
# for i in ret:
#     print(i.group())

# 基礎查找 findall(分組優先顯示) search match
# 替換分割 split(分組保留) sub subn
# 代碼優化 compile finditer

# 分組命名
# html標籤語言
# html是一種代碼
# 對於瀏覽器來講 瀏覽器和代碼之間有一種約定
# 寫在一個標識符以內的代碼 能夠有一種獨立的格式
# 標識符
# <h1>sgjkagjgdjkf</h1>

# 給分組起名字 (?P<tag>正則表達式),使用分組的名字(?P=tag)
# ret = re.search('<(?P<tag>\w+?)>\w+</(?P=tag)>',"<b>hello</b>")
# print(ret.group())
# print(ret.group('tag'))

# 根據分組的索引使用分組 \1,1是分組的索引值
# ret = re.search(r'<(\w+?)>\w+</\1>',"<b>hello</b>")
# print(ret.group())
# print(ret.group(1))

# ret = re.search(r"<(\w+)>\w+</\1>","<h1>hello</h1>")
# ret.group(1)

# ret = re.finditer(r'<(\w+?)>\w+</\1>',"<b>hesakdfkhfkllo</b>")
# for i in ret:
#     print(i.group(1))
#     print(i.group())
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息