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

如何用Python re模块捕获fstab中/tmp挂载点的挂载选项

解决Python re匹配fstab中非注释/tmp挂载选项的方案

可行正则表达式与代码实现

直接通过行首排除注释行,定位挂载点为/tmp的行,捕获对应的挂载选项:

import re

fstab_content = """
/dev/mapper/rootvg-lv_home    /home          ext4    nosuid,nodev        1 2
/dev/mapper/rootvg-lv_opt     /opt           ext4    nosuid,nodev        1 2
#/dev/mapper/rootvg-lv_tmp     /tmp           ext4    nosuid,noexec       1 2
/dev/mapper/rootvg-lv_tmp     /tmp           ext4    nosuid,nodev        1 2
/dev/mapper/rootvg-lv_var     /var           ext4    nosuid,nodev        1 2
"""

# 正则逻辑:匹配非注释行 + 挂载点/tmp + 捕获第四个字段(挂载选项)
pattern = r'^[^#]\S+\s+/tmp\s+\S+\s+(\S+)'
match_result = re.search(pattern, fstab_content, re.MULTILINE)

if match_result:
    print(match_result.group(1))  # 输出:nosuid,nodev

正则表达式说明

  • ^[^#]:行首第一个字符不为#,直接排除注释行
  • \S+:匹配设备路径(非空白字符序列)
  • \s+/tmp:匹配设备与挂载点之间的任意空白,精准定位挂载点/tmp
  • \s+\S+:匹配挂载点与文件系统类型之间的空白,以及文件系统类型(如ext4)
  • \s+(\S+):匹配文件系统与挂载选项之间的空白,捕获挂载选项(非空白字符序列,符合fstab选项格式)

为什么避开后行断言

Python的re模块对后行断言((?<=...))有固定长度限制,无法匹配长度不固定的前置内容,因此直接从行首正向匹配的方案更稳定,也更易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:10:43