编辑:Solved it我自己,这是一个命令语法错误,与regex无关。
我正在尝试匹配以下模式:
(.*)
<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,它应该可以工作,但不可以,你知道怎么了吗?
谢谢你的帮助。
最佳答案
好吧,这是我自己的错,我用了grep -P "regex"
而不是grep -P 'regex'
。
它也适用于pcregrep -M 'regex'
。
无论如何谢谢!