多行grep正则表达式不起作用

时间:2016-04-22 14:30:07

标签: regex linux apache grep

编辑: Solved it我自己,这是一个命令语法错误,与正则表达式无关。

我试图匹配以下模式:

(.*)
<FilesMatch "(^\.ht|~$|\.bak$|\.BAK$|\.old$)">
(.*)
Order Allow,Deny Deny from all
(.*)
</FilesMatch>
(.*)
<DirectoryMatch "(/CVS/|.svn)">
(.*)
Order Allow,Deny Deny from all
(.*)
</DirectoryMatch>
(.*)
(.*) meaning anything

使用grep -P "regex"和此正则表达式:

<FilesMatch \"\(\^\\\.ht\|~\$\|\\\.bak\$\|\\\.BAK\$\|\\\.old\$\)\">(.*\n){1,}Order Allow,Deny Deny from all(.*\n){1,}<\/FilesMatch>(.*\n){1,}<DirectoryMatch \"\(\/CVS\/\|\.svn\)\">(.*\n){1,}Order Allow,Deny Deny from all(.*\n){1,}<\/DirectoryMatch>

通过以下示例文件:

<FilesMatch "(^\.ht|~$|\.bak$|\.BAK$|\.old$)">
Order Allow,Deny Deny from all
</FilesMatch>
<DirectoryMatch "(/CVS/|.svn)">
Order Allow,Deny Deny from all
</DirectoryMatch>

根据regex101,它应该有用,但它没有,你对错误有什么了解吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

Okey这是我自己的错,我用grep -P "regex"而不是grep -P 'regex' ......

它也适用于pcregrep -M 'regex'

非常感谢!