正则表达式
发表于|更新于
|阅读量:
一. 使用正则表达式查找文本模式
1
2
# 字符串
regex_str = "1. wubba lubba dub dubs. 2. Hey, what are you in for? - Everyting. 3. Homework is stupid, the whole point is to get less of it."
1 | # 字符串 |
1、正则操作步骤
- 基础流程如下
1
2
3
4
5
6
import re
regex = re.compile('\d') # 正则表达式
result = regex.search(regex_str) # 查找
print(result.group()) # 返回结果
# 运行结果: 1
- 流程解析
- 导入
re
模块
- 传入正则表达式,返回值为
regex
对象。
- 使用
regex
对象方法(search
)查找匹配正则表达式, 返回Match
对象
- 使用
Match
对象的方法(group
)获取匹配的值。
- 知识点 01 字符替换
\d
: 表示一个数字 0~9
\w
: 表示一个下划线、数字、或字母
\s
: 表示一个空格、制表、换行
- 基础流程如下
1
2
3
4
5
6import re
regex = re.compile('\d') # 正则表达式
result = regex.search(regex_str) # 查找
print(result.group()) # 返回结果
# 运行结果: 1 - 流程解析
- 导入
re
模块 - 传入正则表达式,返回值为
regex
对象。 - 使用
regex
对象方法(search
)查找匹配正则表达式, 返回Match
对象 - 使用
Match
对象的方法(group
)获取匹配的值。
- 导入
- 知识点 01 字符替换
\d
: 表示一个数字 0~9\w
: 表示一个下划线、数字、或字母\s
: 表示一个空格、制表、换行
2、分组
- 代码演示
1
2
3
4
5
6
7
8
9
import re
regex = re.compile("(\d).*(\d).*(\d)") # 分三组
result = regex.search(regex_str)
print(result.group())
# 运行结果:1. wubba lubba dub dubs. Hey, 2. what are you in for? - Everyting. 3
print(result.group(1)) # 打印匹配到的第一组的值
# 运行结果: 1
print(result.groups()) # 打印匹配到的所有组的值
# 运行结果:('1', '2', '3')
- 知识点 2 括号
- 第一个括号内的表达式为第一组,可使用
group(1)
取值
groups()
获取所有分组。
- 代码演示- 知识点 2 括号
1
2
3
4
5
6
7
8
9import re
regex = re.compile("(\d).*(\d).*(\d)") # 分三组
result = regex.search(regex_str)
print(result.group())
# 运行结果:1. wubba lubba dub dubs. Hey, 2. what are you in for? - Everyting. 3
print(result.group(1)) # 打印匹配到的第一组的值
# 运行结果: 1
print(result.groups()) # 打印匹配到的所有组的值
# 运行结果:('1', '2', '3')
- 第一个括号内的表达式为第一组,可使用
group(1)
取值 groups()
获取所有分组。
3、字符
- 代码演示
1
2
3
4
5
6
7
import re
regex = re.compile("(b){2}") # 分三组
result = regex.search(regex_str)
print(result.group())
# 运行结果: bb
print(result.groups())
# 运行结果: ('b',)
- 知识点 3 贪心匹配
(){N}
表示匹配括号内表达式 N次。
(){1,3}
优先匹配3次
(){1,}
优先配对最大值(max
)
(){,2}
优先配对2次,(找不到值则返回为None
)
(){1,3}?
非贪心匹配
- 代码演示- 知识点 3 贪心匹配
1
2
3
4
5
6
7import re
regex = re.compile("(b){2}") # 分三组
result = regex.search(regex_str)
print(result.group())
# 运行结果: bb
print(result.groups())
# 运行结果: ('b',)
(){N}
表示匹配括号内表达式 N次。(){1,3}
优先匹配3次(){1,}
优先配对最大值(max
)(){,2}
优先配对2次,(找不到值则返回为None
)(){1,3}?
非贪心匹配
4、通配符
+
: 加号表示匹配一次或多次。
*
: 星号表示匹配零次或多次。
?
: 问号表示匹配零次或一次。
.
: 表示任意一个字符,非换行符之外的所有字符
^a
:表示以a开头的字符。
$a
: 表示以a结尾的字符。
{N}
: 表示匹配次数。
[auc]
: 表示单字符选择范围(a u c
)
[^auc]
:表示单字符选择范围(除a u c
外字符)
+
: 加号表示匹配一次或多次。*
: 星号表示匹配零次或多次。?
: 问号表示匹配零次或一次。.
: 表示任意一个字符,非换行符之外的所有字符^a
:表示以a开头的字符。$a
: 表示以a结尾的字符。{N}
: 表示匹配次数。[auc]
: 表示单字符选择范围(a u c
)[^auc]
:表示单字符选择范围(除a u c
外字符)
5、扩展
代码演示,compile
参数
1
2
3
4
5
6
7
8
9
10
11
12
import os
regex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符
regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写
regex = re.compile('''(wubba).* # 注释
(dub) # 注释''', re.VERBOSE)
result = regex.search(regex_str)
#运行结果: wubba lubbba dub dub
print(result.group())
代码演示, re
基础方法
1
2
3
4
5
6
7
8
9
10
11
12
13
import os
regex = re.compile("(\d)(bb)")
regex.sub("www", "111bbbb, 111")
#运行结果: 11wwwbb, 111
regex.sub("\2***", "111bbbb, 111")
#运行结果: 11***bb, 111
result = re.match("\w\d\w", "111 11111 111")
print(result.group())
#运行结果: 111
代码演示,
compile
参数1
2
3
4
5
6
7
8
9
10
11
12import os
regex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符
regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写
regex = re.compile('''(wubba).* # 注释
(dub) # 注释''', re.VERBOSE)
result = regex.search(regex_str)
#运行结果: wubba lubbba dub dub
print(result.group())代码演示,
re
基础方法1
2
3
4
5
6
7
8
9
10
11
12
13import os
regex = re.compile("(\d)(bb)")
regex.sub("www", "111bbbb, 111")
#运行结果: 11wwwbb, 111
regex.sub("\2***", "111bbbb, 111")
#运行结果: 11***bb, 111
result = re.match("\w\d\w", "111 11111 111")
print(result.group())
#运行结果: 111
文章作者: 刘星宇
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kahoku丶懒`Blong!
公告
This is my Blog
目录
- 1. 一. 使用正则表达式查找文本模式 12# 字符串regex_str = "1. wubba lubba dub dubs. 2. Hey, what are you in for? - Everyting. 3. Homework is stupid, the whole point is to get less of it." 1、正则操作步骤 基础流程如下123456import reregex = re.compile('\d') # 正则表达式result = regex.search(regex_str) # 查找print(result.group()) # 返回结果# 运行结果: 1 流程解析 导入re模块 传入正则表达式,返回值为regex对象。 使用regex对象方法(search)查找匹配正则表达式, 返回Match对象 使用Match对象的方法(group)获取匹配的值。 知识点 01 字符替换 \d: 表示一个数字 0~9 \w: 表示一个下划线、数字、或字母 \s: 表示一个空格、制表、换行 2、分组 代码演示123456789import reregex = re.compile("(\d).*(\d).*(\d)") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果:1. wubba lubba dub dubs. Hey, 2. what are you in for? - Everyting. 3print(result.group(1)) # 打印匹配到的第一组的值# 运行结果: 1 print(result.groups()) # 打印匹配到的所有组的值# 运行结果:('1', '2', '3') - 知识点 2 括号 第一个括号内的表达式为第一组,可使用group(1)取值 groups() 获取所有分组。 3、字符 代码演示1234567import reregex = re.compile("(b){2}") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果: bbprint(result.groups())# 运行结果: ('b',) - 知识点 3 贪心匹配 (){N} 表示匹配括号内表达式 N次。 (){1,3} 优先匹配3次 (){1,} 优先配对最大值(max) (){,2} 优先配对2次,(找不到值则返回为None) (){1,3}? 非贪心匹配 4、通配符 +: 加号表示匹配一次或多次。 *: 星号表示匹配零次或多次。 ?: 问号表示匹配零次或一次。 .: 表示任意一个字符,非换行符之外的所有字符 ^a:表示以a开头的字符。 $a: 表示以a结尾的字符。 {N}: 表示匹配次数。 [auc]: 表示单字符选择范围(a u c) [^auc]:表示单字符选择范围(除a u c外字符) 5、扩展 代码演示,compile 参数 123456789101112import osregex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写regex = re.compile('''(wubba).* # 注释(dub) # 注释''', re.VERBOSE) result = regex.search(regex_str)#运行结果: wubba lubbba dub dubprint(result.group()) 代码演示, re 基础方法 12345678910111213import osregex = re.compile("(\d)(bb)")regex.sub("www", "111bbbb, 111") #运行结果: 11wwwbb, 111regex.sub("\2***", "111bbbb, 111")#运行结果: 11***bb, 111result = re.match("\w\d\w", "111 11111 111")print(result.group())#运行结果: 111
- 2.
12# 字符串regex_str = "1. wubba lubba dub dubs. 2. Hey, what are you in for? - Everyting. 3. Homework is stupid, the whole point is to get less of it."
1、正则操作步骤
基础流程如下123456import reregex = re.compile('\d') # 正则表达式result = regex.search(regex_str) # 查找print(result.group()) # 返回结果# 运行结果: 1
流程解析
导入re模块
传入正则表达式,返回值为regex对象。
使用regex对象方法(search)查找匹配正则表达式, 返回Match对象
使用Match对象的方法(group)获取匹配的值。
知识点 01 字符替换
\d: 表示一个数字 0~9
\w: 表示一个下划线、数字、或字母
\s: 表示一个空格、制表、换行
2、分组
代码演示123456789import reregex = re.compile("(\d).*(\d).*(\d)") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果:1. wubba lubba dub dubs. Hey, 2. what are you in for? - Everyting. 3print(result.group(1)) # 打印匹配到的第一组的值# 运行结果: 1 print(result.groups()) # 打印匹配到的所有组的值# 运行结果:('1', '2', '3')
- 知识点 2 括号
第一个括号内的表达式为第一组,可使用group(1)取值
groups() 获取所有分组。
3、字符
代码演示1234567import reregex = re.compile("(b){2}") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果: bbprint(result.groups())# 运行结果: ('b',)
- 知识点 3 贪心匹配
(){N} 表示匹配括号内表达式 N次。
(){1,3} 优先匹配3次
(){1,} 优先配对最大值(max)
(){,2} 优先配对2次,(找不到值则返回为None)
(){1,3}? 非贪心匹配
4、通配符
+: 加号表示匹配一次或多次。
*: 星号表示匹配零次或多次。
?: 问号表示匹配零次或一次。
.: 表示任意一个字符,非换行符之外的所有字符
^a:表示以a开头的字符。
$a: 表示以a结尾的字符。
{N}: 表示匹配次数。
[auc]: 表示单字符选择范围(a u c)
[^auc]:表示单字符选择范围(除a u c外字符)
5、扩展
代码演示,compile 参数
123456789101112import osregex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写regex = re.compile('''(wubba).* # 注释(dub) # 注释''', re.VERBOSE) result = regex.search(regex_str)#运行结果: wubba lubbba dub dubprint(result.group())
代码演示, re 基础方法
12345678910111213import osregex = re.compile("(\d)(bb)")regex.sub("www", "111bbbb, 111") #运行结果: 11wwwbb, 111regex.sub("\2***", "111bbbb, 111")#运行结果: 11***bb, 111result = re.match("\w\d\w", "111 11111 111")print(result.group())#运行结果: 111
- 2.1. 1、正则操作步骤 基础流程如下123456import reregex = re.compile('\d') # 正则表达式result = regex.search(regex_str) # 查找print(result.group()) # 返回结果# 运行结果: 1 流程解析 导入re模块 传入正则表达式,返回值为regex对象。 使用regex对象方法(search)查找匹配正则表达式, 返回Match对象 使用Match对象的方法(group)获取匹配的值。 知识点 01 字符替换 \d: 表示一个数字 0~9 \w: 表示一个下划线、数字、或字母 \s: 表示一个空格、制表、换行 2、分组 代码演示123456789import reregex = re.compile("(\d).*(\d).*(\d)") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果:1. wubba lubba dub dubs. Hey, 2. what are you in for? - Everyting. 3print(result.group(1)) # 打印匹配到的第一组的值# 运行结果: 1 print(result.groups()) # 打印匹配到的所有组的值# 运行结果:('1', '2', '3') - 知识点 2 括号 第一个括号内的表达式为第一组,可使用group(1)取值 groups() 获取所有分组。 3、字符 代码演示1234567import reregex = re.compile("(b){2}") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果: bbprint(result.groups())# 运行结果: ('b',) - 知识点 3 贪心匹配 (){N} 表示匹配括号内表达式 N次。 (){1,3} 优先匹配3次 (){1,} 优先配对最大值(max) (){,2} 优先配对2次,(找不到值则返回为None) (){1,3}? 非贪心匹配 4、通配符 +: 加号表示匹配一次或多次。 *: 星号表示匹配零次或多次。 ?: 问号表示匹配零次或一次。 .: 表示任意一个字符,非换行符之外的所有字符 ^a:表示以a开头的字符。 $a: 表示以a结尾的字符。 {N}: 表示匹配次数。 [auc]: 表示单字符选择范围(a u c) [^auc]:表示单字符选择范围(除a u c外字符) 5、扩展 代码演示,compile 参数 123456789101112import osregex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写regex = re.compile('''(wubba).* # 注释(dub) # 注释''', re.VERBOSE) result = regex.search(regex_str)#运行结果: wubba lubbba dub dubprint(result.group()) 代码演示, re 基础方法 12345678910111213import osregex = re.compile("(\d)(bb)")regex.sub("www", "111bbbb, 111") #运行结果: 11wwwbb, 111regex.sub("\2***", "111bbbb, 111")#运行结果: 11***bb, 111result = re.match("\w\d\w", "111 11111 111")print(result.group())#运行结果: 111
- 2.2. 基础流程如下123456import reregex = re.compile('\d') # 正则表达式result = regex.search(regex_str) # 查找print(result.group()) # 返回结果# 运行结果: 1 流程解析 导入re模块 传入正则表达式,返回值为regex对象。 使用regex对象方法(search)查找匹配正则表达式, 返回Match对象 使用Match对象的方法(group)获取匹配的值。 知识点 01 字符替换 \d: 表示一个数字 0~9 \w: 表示一个下划线、数字、或字母 \s: 表示一个空格、制表、换行 2、分组 代码演示123456789import reregex = re.compile("(\d).*(\d).*(\d)") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果:1. wubba lubba dub dubs. Hey, 2. what are you in for? - Everyting. 3print(result.group(1)) # 打印匹配到的第一组的值# 运行结果: 1 print(result.groups()) # 打印匹配到的所有组的值# 运行结果:('1', '2', '3') - 知识点 2 括号 第一个括号内的表达式为第一组,可使用group(1)取值 groups() 获取所有分组。 3、字符 代码演示1234567import reregex = re.compile("(b){2}") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果: bbprint(result.groups())# 运行结果: ('b',) - 知识点 3 贪心匹配 (){N} 表示匹配括号内表达式 N次。 (){1,3} 优先匹配3次 (){1,} 优先配对最大值(max) (){,2} 优先配对2次,(找不到值则返回为None) (){1,3}? 非贪心匹配 4、通配符 +: 加号表示匹配一次或多次。 *: 星号表示匹配零次或多次。 ?: 问号表示匹配零次或一次。 .: 表示任意一个字符,非换行符之外的所有字符 ^a:表示以a开头的字符。 $a: 表示以a结尾的字符。 {N}: 表示匹配次数。 [auc]: 表示单字符选择范围(a u c) [^auc]:表示单字符选择范围(除a u c外字符) 5、扩展 代码演示,compile 参数 123456789101112import osregex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写regex = re.compile('''(wubba).* # 注释(dub) # 注释''', re.VERBOSE) result = regex.search(regex_str)#运行结果: wubba lubbba dub dubprint(result.group()) 代码演示, re 基础方法 12345678910111213import osregex = re.compile("(\d)(bb)")regex.sub("www", "111bbbb, 111") #运行结果: 11wwwbb, 111regex.sub("\2***", "111bbbb, 111")#运行结果: 11***bb, 111result = re.match("\w\d\w", "111 11111 111")print(result.group())#运行结果: 111
- 2.3. 2、分组 代码演示123456789import reregex = re.compile("(\d).*(\d).*(\d)") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果:1. wubba lubba dub dubs. Hey, 2. what are you in for? - Everyting. 3print(result.group(1)) # 打印匹配到的第一组的值# 运行结果: 1 print(result.groups()) # 打印匹配到的所有组的值# 运行结果:('1', '2', '3') - 知识点 2 括号 第一个括号内的表达式为第一组,可使用group(1)取值 groups() 获取所有分组。 3、字符 代码演示1234567import reregex = re.compile("(b){2}") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果: bbprint(result.groups())# 运行结果: ('b',) - 知识点 3 贪心匹配 (){N} 表示匹配括号内表达式 N次。 (){1,3} 优先匹配3次 (){1,} 优先配对最大值(max) (){,2} 优先配对2次,(找不到值则返回为None) (){1,3}? 非贪心匹配 4、通配符 +: 加号表示匹配一次或多次。 *: 星号表示匹配零次或多次。 ?: 问号表示匹配零次或一次。 .: 表示任意一个字符,非换行符之外的所有字符 ^a:表示以a开头的字符。 $a: 表示以a结尾的字符。 {N}: 表示匹配次数。 [auc]: 表示单字符选择范围(a u c) [^auc]:表示单字符选择范围(除a u c外字符) 5、扩展 代码演示,compile 参数 123456789101112import osregex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写regex = re.compile('''(wubba).* # 注释(dub) # 注释''', re.VERBOSE) result = regex.search(regex_str)#运行结果: wubba lubbba dub dubprint(result.group()) 代码演示, re 基础方法 12345678910111213import osregex = re.compile("(\d)(bb)")regex.sub("www", "111bbbb, 111") #运行结果: 11wwwbb, 111regex.sub("\2***", "111bbbb, 111")#运行结果: 11***bb, 111result = re.match("\w\d\w", "111 11111 111")print(result.group())#运行结果: 111
- 2.4. 代码演示123456789import reregex = re.compile("(\d).*(\d).*(\d)") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果:1. wubba lubba dub dubs. Hey, 2. what are you in for? - Everyting. 3print(result.group(1)) # 打印匹配到的第一组的值# 运行结果: 1 print(result.groups()) # 打印匹配到的所有组的值# 运行结果:('1', '2', '3') - 知识点 2 括号 第一个括号内的表达式为第一组,可使用group(1)取值 groups() 获取所有分组。 3、字符 代码演示1234567import reregex = re.compile("(b){2}") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果: bbprint(result.groups())# 运行结果: ('b',) - 知识点 3 贪心匹配 (){N} 表示匹配括号内表达式 N次。 (){1,3} 优先匹配3次 (){1,} 优先配对最大值(max) (){,2} 优先配对2次,(找不到值则返回为None) (){1,3}? 非贪心匹配 4、通配符 +: 加号表示匹配一次或多次。 *: 星号表示匹配零次或多次。 ?: 问号表示匹配零次或一次。 .: 表示任意一个字符,非换行符之外的所有字符 ^a:表示以a开头的字符。 $a: 表示以a结尾的字符。 {N}: 表示匹配次数。 [auc]: 表示单字符选择范围(a u c) [^auc]:表示单字符选择范围(除a u c外字符) 5、扩展 代码演示,compile 参数 123456789101112import osregex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写regex = re.compile('''(wubba).* # 注释(dub) # 注释''', re.VERBOSE) result = regex.search(regex_str)#运行结果: wubba lubbba dub dubprint(result.group()) 代码演示, re 基础方法 12345678910111213import osregex = re.compile("(\d)(bb)")regex.sub("www", "111bbbb, 111") #运行结果: 11wwwbb, 111regex.sub("\2***", "111bbbb, 111")#运行结果: 11***bb, 111result = re.match("\w\d\w", "111 11111 111")print(result.group())#运行结果: 111
- 2.5. 3、字符 代码演示1234567import reregex = re.compile("(b){2}") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果: bbprint(result.groups())# 运行结果: ('b',) - 知识点 3 贪心匹配 (){N} 表示匹配括号内表达式 N次。 (){1,3} 优先匹配3次 (){1,} 优先配对最大值(max) (){,2} 优先配对2次,(找不到值则返回为None) (){1,3}? 非贪心匹配 4、通配符 +: 加号表示匹配一次或多次。 *: 星号表示匹配零次或多次。 ?: 问号表示匹配零次或一次。 .: 表示任意一个字符,非换行符之外的所有字符 ^a:表示以a开头的字符。 $a: 表示以a结尾的字符。 {N}: 表示匹配次数。 [auc]: 表示单字符选择范围(a u c) [^auc]:表示单字符选择范围(除a u c外字符) 5、扩展 代码演示,compile 参数 123456789101112import osregex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写regex = re.compile('''(wubba).* # 注释(dub) # 注释''', re.VERBOSE) result = regex.search(regex_str)#运行结果: wubba lubbba dub dubprint(result.group()) 代码演示, re 基础方法 12345678910111213import osregex = re.compile("(\d)(bb)")regex.sub("www", "111bbbb, 111") #运行结果: 11wwwbb, 111regex.sub("\2***", "111bbbb, 111")#运行结果: 11***bb, 111result = re.match("\w\d\w", "111 11111 111")print(result.group())#运行结果: 111
- 2.6. 代码演示1234567import reregex = re.compile("(b){2}") # 分三组result = regex.search(regex_str)print(result.group())# 运行结果: bbprint(result.groups())# 运行结果: ('b',) - 知识点 3 贪心匹配 (){N} 表示匹配括号内表达式 N次。 (){1,3} 优先匹配3次 (){1,} 优先配对最大值(max) (){,2} 优先配对2次,(找不到值则返回为None) (){1,3}? 非贪心匹配 4、通配符 +: 加号表示匹配一次或多次。 *: 星号表示匹配零次或多次。 ?: 问号表示匹配零次或一次。 .: 表示任意一个字符,非换行符之外的所有字符 ^a:表示以a开头的字符。 $a: 表示以a结尾的字符。 {N}: 表示匹配次数。 [auc]: 表示单字符选择范围(a u c) [^auc]:表示单字符选择范围(除a u c外字符) 5、扩展 代码演示,compile 参数 123456789101112import osregex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写regex = re.compile('''(wubba).* # 注释(dub) # 注释''', re.VERBOSE) result = regex.search(regex_str)#运行结果: wubba lubbba dub dubprint(result.group()) 代码演示, re 基础方法 12345678910111213import osregex = re.compile("(\d)(bb)")regex.sub("www", "111bbbb, 111") #运行结果: 11wwwbb, 111regex.sub("\2***", "111bbbb, 111")#运行结果: 11***bb, 111result = re.match("\w\d\w", "111 11111 111")print(result.group())#运行结果: 111
- 2.7. 4、通配符 +: 加号表示匹配一次或多次。 *: 星号表示匹配零次或多次。 ?: 问号表示匹配零次或一次。 .: 表示任意一个字符,非换行符之外的所有字符 ^a:表示以a开头的字符。 $a: 表示以a结尾的字符。 {N}: 表示匹配次数。 [auc]: 表示单字符选择范围(a u c) [^auc]:表示单字符选择范围(除a u c外字符) 5、扩展 代码演示,compile 参数 123456789101112import osregex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写regex = re.compile('''(wubba).* # 注释(dub) # 注释''', re.VERBOSE) result = regex.search(regex_str)#运行结果: wubba lubbba dub dubprint(result.group()) 代码演示, re 基础方法 12345678910111213import osregex = re.compile("(\d)(bb)")regex.sub("www", "111bbbb, 111") #运行结果: 11wwwbb, 111regex.sub("\2***", "111bbbb, 111")#运行结果: 11***bb, 111result = re.match("\w\d\w", "111 11111 111")print(result.group())#运行结果: 111
- 2.8. +: 加号表示匹配一次或多次。 *: 星号表示匹配零次或多次。 ?: 问号表示匹配零次或一次。 .: 表示任意一个字符,非换行符之外的所有字符 ^a:表示以a开头的字符。 $a: 表示以a结尾的字符。 {N}: 表示匹配次数。 [auc]: 表示单字符选择范围(a u c) [^auc]:表示单字符选择范围(除a u c外字符) 5、扩展 代码演示,compile 参数 123456789101112import osregex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写regex = re.compile('''(wubba).* # 注释(dub) # 注释''', re.VERBOSE) result = regex.search(regex_str)#运行结果: wubba lubbba dub dubprint(result.group()) 代码演示, re 基础方法 12345678910111213import osregex = re.compile("(\d)(bb)")regex.sub("www", "111bbbb, 111") #运行结果: 11wwwbb, 111regex.sub("\2***", "111bbbb, 111")#运行结果: 11***bb, 111result = re.match("\w\d\w", "111 11111 111")print(result.group())#运行结果: 111
- 2.9. 5、扩展 代码演示,compile 参数 123456789101112import osregex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写regex = re.compile('''(wubba).* # 注释(dub) # 注释''', re.VERBOSE) result = regex.search(regex_str)#运行结果: wubba lubbba dub dubprint(result.group()) 代码演示, re 基础方法 12345678910111213import osregex = re.compile("(\d)(bb)")regex.sub("www", "111bbbb, 111") #运行结果: 11wwwbb, 111regex.sub("\2***", "111bbbb, 111")#运行结果: 11***bb, 111result = re.match("\w\d\w", "111 11111 111")print(result.group())#运行结果: 111
- 2.10. 代码演示,compile 参数 123456789101112import osregex = re.compile(".*", re.DOTALL) # 匹配所有字符,包括换行符regex = re.compile("aAsA", re.IGNORECASE) # 不区分大小写regex = re.compile('''(wubba).* # 注释(dub) # 注释''', re.VERBOSE) result = regex.search(regex_str)#运行结果: wubba lubbba dub dubprint(result.group()) 代码演示, re 基础方法 12345678910111213import osregex = re.compile("(\d)(bb)")regex.sub("www", "111bbbb, 111") #运行结果: 11wwwbb, 111regex.sub("\2***", "111bbbb, 111")#运行结果: 11***bb, 111result = re.match("\w\d\w", "111 11111 111")print(result.group())#运行结果: 111