【发布时间】:2012-06-18 12:50:45
【问题描述】:
试图在正则表达式处理中围绕 look-ahead 和 look-behind。
假设我有一个列出 PID 和其他内容的文件。我想构建一个正则表达式来匹配 PID 格式 \d{1,5} 但这也排除了某个 PID。
$myself = $$;
@file = `cat $FILE`;
@pids = grep /\d{1,5}(?<!$myself)/, @file;
在这个正则表达式中,我尝试使用 (? 构造将数字匹配与排除相结合。这不起作用。
示例文件:
456
789
4567
345
22743
root
bin
sys
如果有人能指出我正确的方向,我将不胜感激。
还想知道在这种情况下,这种消极的后视是否是最有效的。
【问题讨论】:
-
你能发布一些示例数据吗?请注意,look-behind 必须具有固定宽度,否则将不起作用。
-
比“PID 和其他东西”了解更多关于文件内容会很有帮助。
-
实际上“文件”来自 /proc 的目录列表(想法是在没有我自己的情况下获取正在运行的 PID 列表)
标签: regex perl negative-lookbehind