2016-04-22 3 views
1

EDIT:Solved it себя, это была синтаксическая ошибка команды, не имеющая никакого отношения к регулярному выражению.Многострочное регулярное выражение grep не работает

Я пытаюсь соответствовать следующему шаблону:

(.*) 
<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, он должен работать, но это не так, вы имеете какое-либо представление о том, что не так?

Благодарим за помощь.

ответ

2

Окей, это моя вина, я использовал grep -P "regex" вместо grep -P 'regex' ...

Он также работает с pcregrep -M 'regex'.

В любом случае, спасибо!

+1

В следующий раз покажите точное заклинание, которое не работает. – choroba

Смежные вопросы