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

如何用正则匹配PAM文件行并提取deny配置分组信息?

PAM文件deny配置匹配正则方案

当前正则的问题

你提供的正则逻辑存在错误:

  • 条件判断(?(1) (deny\=(\d+))|(.*))中的分组1是匹配开头的auth required pam_faillock.so部分,只要该行是目标PAM规则,这个分组就必然匹配成功,条件永远为真,会强制尝试匹配deny=(\d+)
  • 当行中没有deny配置时,这两个分组不会被捕获,甚至可能导致整个正则匹配失败,无法满足第二行返回空分组的需求

正确的正则实现

使用以下正则即可完全满足你的需求:

^auth\s+required\s+pam_faillock\.so.*?(deny=(\d+))?

逻辑说明

  • ^auth\s+required\s+pam_faillock\.so:精准匹配目标PAM规则的固定前缀
  • .*?:非贪婪匹配前缀后的任意内容,确保不会跳过deny=配置
  • (deny=(\d+))?:将deny=数字配置设为可选捕获分组(?表示该分组可出现0或1次):
    • 分组1捕获完整的deny=X字符串
    • 分组2捕获deny=后的数字值

匹配验证

  • 对第一行auth required pam_faillock.so authsucc deny=4 even_deny_root unlock_time=1200:
    • 分组1:deny=4
    • 分组2:4
  • 对第二行auth required pam_faillock.so authsucc even_deny_root unlock_time=1200:
    • 分组1:空
    • 分组2:空

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:17:10