日常

学习

Posted by KK on January 16, 2025

我来分别解释这些关键元素:

  1. re.compile() - 正则表达式编译方法
    import re
    pattern = re.compile(r"正则表达式", flags=参数)
    

    这是Python正则表达式模块的编译方法,作用是将字符串形式的正则表达式预编译为Pattern对象。编译后可以重复使用,提高匹配效率。在示例中用来创建预编译的正则表达式对象。

  2. re.MULTILINE - 多行模式标志
    ^  # 在多行模式下匹配每行的开头(而非整个字符串的开头)
    $  # 在多行模式下匹配每行的结尾(而非整个字符串的结尾)
    

    当使用这个标志时:

    • ^ 会匹配每行的开头(而不仅仅是整个字符串的开头)
    • $ 会匹配每行的结尾(而不仅仅是整个字符串的结尾) 示例效果: ```text 没有re.MULTILINE时: ^Report → 只能匹配整个文本开头出现的Report

使用re.MULTILINE时: ^Report → 能匹配每行开头的Report


3. `{2}` 和 `{5}` - 精确数量匹配
```python
{2}  # 表示前面的模式必须精确出现2次
{5}  # 表示前面的模式必须精确出现5次

在示例中:

  • {2} 匹配两个空格(等价于
  • {5} 匹配五个空格(等价于

完整解析示例正则表达式:

r"^Report: {2}(.*\.html)$"
  • ^:匹配行首
  • Report: :固定匹配”Report: “字符串
  • {2}:匹配两个空格
  • (.*\.html):捕获组,匹配任意字符直到.html结尾
  • $:匹配行尾

这三个元素的组合实现了: 在多行文本中逐行扫描,精确匹配特定格式的报告/日志路径,最终通过group(1)可以提取出文件路径:

match = report_regex.search(output_text)
if match:
    report_path = match.group(1)  # 获取D:\results\report.html这样的路径