python3 re正则表达式
代码 | 说明 |
---|
. | 匹配除换行符(\n)以外的任意字符 |
---|
^ | 匹配字符串的开头 |
---|
$ | 匹配字符串的末尾 |
---|
\w | 匹配字母或数字或下划线或汉字0-9、a-z、A-Z、_(下划线)、汉字和其他国家的语言符号 |
---|
\W | 匹配非字母或数字或下划线或汉字,跟\w正好相反 |
---|
\s | 匹配任意的空白符 |
---|
\S | 匹配任意非空白符 |
---|
\d | 匹配数字 |
---|
\D | 匹配非数字 |
---|
\b | 匹配单词的开始或结束 |
---|
|
a| b | 匹配a或b |
---|
(re) | 匹配括号内的表达式,也表示一个组 |
---|
[...] | 用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k' |
---|
[^...] | 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符 |
---|
re* | 匹配0个或多个的表达式 |
---|
re+ | 匹配1个或多个的表达式 |
---|
re? | 重复零次或一次 |
---|
re{n} | 重复n次 |
---|
re{n,} | 重复n次或更多次 |
---|
re{n,m} | 重复n到m次 |
---|
代码 | 说明 |
---|
[Pp]ython | 匹配 "Python" 或 "python" |
---|
rub[ye] | 匹配 "ruby" 或 "rube" |
---|
[aeiou] | 匹配 "Python" 或 "python" |
---|
[0-9] | 匹配任何数字。类似于 [0123456789] |
---|
[a-z] | 匹配任何小写字母 |
---|
[A-Z] | 匹配任何大写字母 |
---|
[A-Z] | 匹配任何大写字母 |
---|
[a-zA-Z0-9] | 匹配任何大写字母 |
---|
[^0-9] | 匹配除了数字外的字符 |
---|
代码 | 说明 |
---|
re.I | 使匹配对大小写不敏感 |
---|
re.L | 做本地化识别(local-aware)匹配 |
---|
re.M | 多行匹配,影响^ 和 $ |
---|
re.S | 使用 . 匹配包括换行在内的所有字符 |
---|
re.U | 根据Unicode字符集解析字符。这个标志影响\w,\W,\b,\B |
---|
re.X | 该标志通过给予你更灵活的格式以便你将正则表达式写得更易理解 |
---|
re.match函数(匹配)
re.match(pattern, string, flags)
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式
import re
print(re.match('abc', 'abc.vip123.com').span())
print(re.match('com', 'abc.vip123.com').span())
re.search方法(查找)
re.search(pattern, string, flags)
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式
import re
print(re.search('abc', 'abc.vip123.com').span())
print(re.search('com', 'abc.vip123.com').span())
re.sub函数(检索和替换)
re.sub(pattern, repl, string, count, flags)
pattern : 匹配的正则表达式
repl : 替换后的字符串,也可为一个函数
string : 要被查找替换的原始字符串
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配
flags : 编译时用的匹配模式,数字形式
import re
def double(num):
value = int(num.group('value'))
return str(value * 2)
s = 'AAAaa7as8ach6ac66cas9m'
print(re.sub('(?P<value>\d+)', double, s))
s2="333-22-111"
num = re.sub(r'\D', "", s2)
print (num)
re.findall函数(查找所有)
re.findall(pattern, string, flags)
pattern:匹配模式
string:待匹配的字符串
pos:可选参数,指定字符串的起始位置,默认为 0
endpos 可选参数,指定字符串的结束位置,默认为末尾
import re
result1 = re.findall(r'\d+','runoob 123 google 456')
pattern = re.compile(r'\d+')
result2 = pattern.findall('runoob 123 google 456')
result3 = pattern.findall('run88oob123google456', 0, 10)
print(result1)
print(result2)
print(result3)
re.split函数(字符串分割)
re.split(pattern, string, maxsplit, flags)
pattern:匹配的正则表达式
string:要匹配的字符串
maxsplit:分割次数,maxsplit=1 分割一次,默认为 0,不限制次数
flags:标志位
import re
str=re.split('\W+', ' runoob, runoob, runoob.', 1)
print(str)
案例
import re
text=“啊实打实的报价明细5500元啊实打实的”
text1=re.search('报价明细.*元', text).group()
print(text1)