You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python re库编写正则,排除以#开头及#后带多空格/制表符的字符串?

可以实现,具体方案如下

核心思路

要满足你的需求,我们需要用负向先行断言来排除两类行:

  1. 以#开头(包括#后跟随任意空格/制表符)的注释行
  2. 已匹配过的module load MNO行
    同时确保只匹配module load XXX格式的有效行。

正则表达式与Python代码实现

import re

# 定义正则模式
pattern = r'^(?!#\s*)(?!module load MNO$)module load .+$'

# 测试用例
test_cases = [
    "module load ABC",
    "# module load DEF",
    "#\tmodule load GHI",
    "# \tmodule load JKL",
    "module load MNO",
    "module load XYZ"
]

for line in test_cases:
    match = re.fullmatch(pattern, line)
    print(f"行: '{line}' → 匹配结果: {bool(match)}")

正则模式解释

  • ^:匹配行的起始位置
  • (?!#\s*):负向先行断言,确保行开头不是#(或#后跟任意数量的空格/制表符)
  • (?!module load MNO$):负向先行断言,确保整行不是module load MNO
  • module load .+:匹配以module load 开头,后面跟任意非空内容的行
  • $:匹配行的结束位置

测试结果

运行代码后会输出:

行: 'module load ABC' → 匹配结果: True
行: '# module load DEF' → 匹配结果: False
行: '#\tmodule load GHI' → 匹配结果: False
行: '# \tmodule load JKL' → 匹配结果: False
行: 'module load MNO' → 匹配结果: False
行: 'module load XYZ' → 匹配结果: True

扩展说明

如果你的场景中允许有效行开头有空格/制表符(比如 module load ABC),只需要在正则中加入\s*即可,修改后的模式为:

pattern = r'^(?!#\s*)\s*(?!module load MNO$)module load .+$'

内容的提问来源于stack exchange,提问作者GGGGGGGG5566

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:10:25