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])
- `
相关文章
暂无评论...
 
                             
                         
                            