人生苦短 我用python
开始愉快的享(代)受(码)时间:
- 注意:
1):正则表达式(RE)是一种小型的 高度专业化的编程语言 它内嵌python中 并通过re模块来实现但并非所有的字符串处理都能使用正则表达式
2):python中 可以将正则表达式编译成一个对象 re提供了一个正则表达式引擎的接口 可以让你将REstring编译成对象并用他们来进行匹配
- 常用元字符
[ ]: 常用于指定字符集 元字符在字符集中不起作用
^ : 尖角号 通常用于匹配行首
$ :dollor符 用于匹配末尾
\ 将元字符转成普通符号的话 就用转义字符\
{8} :{}表示将前面规则重复8次
* 表示前面重复0到多次
+表示最少重复一次
?:表示可有可无 当出现在重复元字符后时表示非贪婪模式
x|y 匹配 x 或 y
\d 匹配一个数字字符。等价于 [0-9]
\D 匹配一个非数字字符。等价于 [^0-9]
\w 匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'
\W 匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]
. 匹配除换行符 \n 之外的任何单字符 。
- 在python中的方法使用:
导入模块 import re
import re
pattern = re.compile(r'规则') # 将正则表达式编译成Pattern对象
pattern.match('hello world!') # 匹配开头 如果有结果的返回一个对象
pattern.search('hello world!') # match 只查找开头部分 search整个字符串查找 返回第一个匹配的结果
pattern.findall('one1two2three3four4') # 查找整个字符串 返回一个列表
pattern.split(''字符串'') # 可以将字符串匹配正则表达式的部分割开并返回一个列表 例如: re.split(r'[\+\-\*]', s) 按照+ - * 分割字符串s
pattern.sub('要替换的内容', '原始要被替换的内容') # 替换
- 示例:
import re
pattern = re.compile(r'(\w+)')
s = "hello 123,hello 456"
#查找
s_list=pattern.findall(s)
print(s_list)
# 替换
s_list=pattern.sub('hello world',s)
print(s_list)
结果为:
['hello', '123', 'hello', '456']
hello world hello world,hello world hello world
-
:编译前1:re.findall(rule,str)即 (规则, 字符串)
-
编译后2:re_tel = re.compile(rule,这里选填) 编译后要比编译前匹配起来的速度快很多
网友评论