目录
1,python 正则匹配
1.1 re.search 正则表达式
1.2 re.match() 正则表达式
1.3 re.match 与 re.search 的区别
1.4 检索和替换
1.5 正则表达式对象
1.6 正则表达式修饰符 - 可选标志
1.7 正则表达式模式
1.8 正则表达式实例
1.9 正则表达式 re.findall 用法
来源 http://www.runoob.com/python/python-reg-expressions.html
1,python 正则匹配
1.1 re.search 正则表达式
search 将字符串的所有字串尝试与正则表达式匹配, 如果所有的字串都没有匹配成功, 返回 none, 否则返回 matchobject;(可以理解为 "无为 0, 有为 1")
- import re
- s1 = "helloworld,i am 30"
- w1 = "world"
- m1 = re.search(w1,s1)
- if m1:
- print("find:%s"%m1.group())
输出为:(m1.group() 可以一次输出多个数组 -- 对应字符串, 此处匹配到一个 world, 则输出匹配到的一个字符串)
world
1.2 re.match() 正则表达式
match 只从字符串的开始与正则表达式匹配, 匹配成功返回 matchobject, 否则返回 none
- import re
- s1 = "helloworld,i am 30"
- w1 = "world"
- m1 = re.match(w1,s1)
- if m1:
- print("find:%s"%m1.group())
- else
- print("no match")
输出为:(由于 re.match() 从字符串开头匹配, 两个字符串都不匹配, 因此无法匹配)
no match
1.3 re.match 与 re.search 的区别
1.4 检索和替换
(1)repl 参数是一个函数
(2)re.compile 函数
(3)findall
在字符串中找到正则表达式所匹配的所有子串, 并返回一个列表, 如果没有找到匹配的, 则返回空列表.
注意: match 和 serach 是匹配一次, findall 是匹配所有.
语法格式为: findall(string[, pos[, endpos]])
参数:
string: 待匹配的字符串;
pos: 可选参数, 指定字符串的起始位置, 默认为 0;
endpos: 可选参数, 指定字符串的结束位置, 默认为字符串的长度;
查找字符串中的所有数字:
- pattern = re.complie(r'\d+') #查找数字
- result1 = pattern.findall('runoob 123 google 456')
- result2 = pattern.findall('run88oobgoogle456', 0, 10)
- print(result1)
- print(result2)
输出结果为:
- ['123', '456']
- ['88', '12']
result2 = pattern.findall('run88oobgoogle456', 0, 10) 中的 0 指的是字符串中的起始位置, 10 指的是字符串的结束位置, 默认为字符串的长度;
- (4)re.finditer
- (5)re.split
1.5 正则表达式对象
- (1)re.RegexObject
- (2)re.MatchObject
1.6 正则表达式修饰符 - 可选标志
1.7 正则表达式模式
1.8 正则表达式实例
1.9 正则表达式 re.findall 用法
语法: findall(pattern, string, flags=0)
正则 re.findall 是返回 string 中所有与 pattern 相匹配的全部字串, 返回形式为数组;
(1) 一般情况
- regular_v1 = re.findall(r"docs", "https://docs.python.org/3/whatsnew/3.6.html")
- print(regual_v1)
输出结果为:
['docs']
(2) 符号 ^ 表示匹配 https 开头的字符串返回
- regular_v2 = re.findall(r"^https", "https://docs.python.org/3/whatsnew/3.6.html")
- print(regular_v2)
输出结果为:
['https']
(3) 用 $ 符号表示以 html 结尾的字符串返回, 判断是否字符串结束的字符串
- regular_v3 = re.findall(r"html$", "https://docs.python.org/3/whatsnew/3.6.html")
- print(regular_v3)
输出结果为:
'html'
(4)[...] 匹配括号中的其中一个字符
- regular_v4 = re.findall(r"[t,w]h", "https://docs.python.org/3/whatsnew/3.6.html")
- print(regular_v4)
输出结果为:
['th', 'wh']
(5)"d" 是正则语法规则用来匹配 0 到 9 之间的数返回列表
- regular_v5 = re.findall(r"\d", "https://docs.python.org/3/whatsnew/3.6.html")
- regular_v6 = re.findall(r"\d\d\d", "https://docs.python.org/3/whatsnew/3.6.html/1234")
- print(regular_v5)
- print(regular_v6)
输出结果为:
- ['3', '3', '6']
- ['123']
(6) 小 d 表示取数字 0-9, 大 D 表示不要数字, 也就是除了数字以外的内容返回
- regular_v7 = re.findall(r"\D", "https://docs.python.org/3/whatsnew/3.6.html")
- print(regular_v7)
输出结果为:
['h', 't', 't', 'p', 's', ':', '/', '/', 'd', 'o', 'c', 's', '.', 'p', 'y', 't', 'h', 'o', 'n', '.', 'o', 'r', 'g', '/', '/', 'w', 'h', 'a', 't', 's', 'n', 'e', 'w', '/', '.', '.', 'h', 't', 'm', 'l']
(7)"w" 在正则里面代表匹配从小写 a 到 z, 大写 A 到 Z, 数字 0 到 9
- regular_v8 = re.findall(r"\w", "https://docs.python.org/3/whatsnew/3.6.html")
- print(regular_v8)
输出结果为:
['h', 't', 't', 'p', 's', ':', '/', '/', 'd', 'o', 'c', 's', '.', 'p', 'y', 't', 'h', 'o', 'n', '.', 'o', 'r', 'g', '/', '/', 'w', 'h', 'a', 't', 's', 'n', 'e', 'w', '/', '.', '.', 'h', 't', 'm', 'l']
(8)"W" 在正则里面代表匹配除了字母与数字以外的特殊符号
- regular_v8 = re.findall(r"\W", "https://docs.python.org/3/whatsnew/3.6.html")
- print(regular_v8)
输出结果为:
[':', '/', '/', '.', '.', '/', '/', '/', '.', '.']
来源: http://www.bubuko.com/infodetail-2760174.html