re模块
正则表达式是一种强大的文本处理工具,它通过特定的符号来定义搜索模式。以下是一些常用的正则表达式符号及其含义:
表达符号 | 说明 |
---|---|
. | 匹配除换行符\n 之外的任意字符 |
- | 表示字符范围,如[0-9] 表示匹配任意数字 |
* | 匹配前面的子表达式零次或多次,例如ab* 会匹配"a" 、"ab" 、"abb" 等 |
+ | 匹配前面的子表达式一次或多次 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
\ | 转义字符,用于匹配特殊字符,如\_ 表示匹配下划线 |
? | 匹配前面的子表达式零次或一次 |
{m} | 精确匹配前面的字符m次 |
{m,n} | 匹配前面的字符至少m次,最多n次 |
\d | 匹配任意数字,等同于[0-9] |
\D | 匹配任意非数字字符,等同于[^0-9] |
\w | 匹配任意字母或数字,等同于[A-Za-z0-9] |
\W | 匹配任意非字母数字字符,等同于[^A-Za-z0-9] |
\s | 匹配任意空白字符 |
\S | 匹配任意非空白字符 |
\A | 匹配字符串的开头 |
\Z | 匹配字符串的结尾 |
\b | 匹配单词边界 |
\B | 匹配非单词边界 |
[] | 定义一个字符集合,用于匹配集合中的任意字符 |
正则表达式注意事项
字符集
字符集通过中括号[]
定义,可以包含任意字符或字符范围。例如:
[pj]ython
匹配"python"
或"jython"
。[a-z]
匹配任意小写字母。[a-zA-Z0-9]
匹配任意大小写字母或数字。[^abc]
匹配除了"a"
、"b"
、"c"
之外的任意字符。
可选项和重复子模式
在子模式后添加问号?
使其成为可选项,例如:
re.findall(r'(aa)?(bb)?ccddee', 'aabbccddee')
# 输出:['aabbccddee', 'aaccddee', 'bbccddee', 'ccddee']
字符串的开始和结尾
w+
匹配以w
开头的字符串。http
匹配以http
开头的字符串。com$
匹配以com
结尾的字符串。
常用函数
函数 | 作用 |
---|---|
re.compile(pattern[, flags]) | 编译正则表达式模式 |
re.search(pattern, string[, flags]) | 搜索字符串中的第一个匹配项 |
re.match(pattern, string[, flags]) | 从字符串开始处匹配 |
re.findall(pattern, string) | 查找字符串中所有匹配项 |
re.split(pattern, string[, maxsplit=0]) | 根据匹配项分割字符串 |
re.finditer(pattern, string, flags=0) | 查找字符串中所有匹配项,返回迭代器 |
re.sub(pattern, repl, string, count=0, flags=0) | 替换字符串中的匹配项 |
re.escape(string) | 转义字符串中的特殊字符 |
re.compile(pattern[, flags])
编译正则表达式模式,提高多次使用时的效率:
import re
pattern = re.compile(r'^(.*?)\s+\((.*?)\)\s+\[(.*?)\]\s+\.\.\.\.\s(.*?):\s+(.*?)$')
log_message = "-0 (-----) [004] .... 2628922.673375: cpu_idle: state=0 cpu_id=4"
match = pattern.match(log_message)
print(match) #
search(pattern, string[, flags]) 和 match(pattern, string[, flags])
- `
相关文章
暂无评论...