与正则表达式匹配除提供的字符串之外的任何字符串

时间:2015-10-26 13:08:48

标签: regex

为了配置apache,我正在使用一个正则表达式。我的目标是匹配任何字符串,但提供的字符串。我知道有一些关于stackoverflow的问题,但到目前为止我无法修复它。

正则表达式应匹配

/home/www/dir1/*
/home/www/dir_wl/example1/*
/home/www/dir_wl/example2/*

它不应该匹配

/home/www/dir1/MEW/*
/home/www/dir_wl/example1/MEW/*
/home/www/dir_wl/example2/MEW*

以下是整行:     <Directory ~ "^/home/www/(dir1|dir_wl/.*(?!MEW))/(?!MEW/)">

任何帮助都非常有用!

1 个答案:

答案 0 :(得分:0)

我得到了&#34; grep -P&#34;。 &#34; -P&#34;意味着&#34; Interpret PATTERN as a Perl regular expression&#34;。您正在使用的程序必须支持此功能。

我创建了文件&#34; dirs.txt&#34;具有以下内容:

/home/www/dir1/*
/home/www/dir_wl/example1/*
/home/www/dir_wl/example2/*

/home/www/dir1/MEW/*
/home/www/dir_wl/example1/MEW/*
/home/www/dir_wl/example2/MEW*

然后我运行这个命令。

cat dirs.txt | grep -P "^/home/www/(dir1|dir_wl)/(?!MEW)(((?!/MEW).)*$)"

它返回......

/home/www/dir1/*
/home/www/dir_wl/example1/*
/home/www/dir_wl/example2/*

这样做的方式更简单......

cat regex.txt | grep -E "^/home/www/(dir1|dir_wl)/" | grep -v -E "/MEW"