我正在开发一个 bash 脚本,该脚本可以将 nginx 位置块添加到采用 URL 的文件中。为了防止重复,如果它已经存在,这个脚本也会删除它们。
为了删除一个已经存在的块,我在下面制作了正则表达式。
^location\s\/${URLGOESHERE} {[\s\S]*?(?=\n{2,})$
正则表达式需要匹配整个多行块,如下所示:
location /URLGOESHERE {
try_files $uri /URLGOESHERE/index.php?$query_string;
}
我希望正则表达式匹配块内的任何内容,直到右括号}
文件内将有多个块,例如
location /URL1HERE {
expires 7d;
try_files $uri /URLGOESHERE/index.php?$query_string;
allow all;
Etc....
}
location /URL2HERE {
try_files $uri /URLGOESHERE/index.php?$query_string;
}
location /URL3HERE {
try_files $uri /URLGOESHERE/index.php?$query_string;
}
location /URL4HERE {
expires 7d;
try_files $uri /URLGOESHERE/index.php?$query_string;
allow all;
Etc....
}
我制作的正则表达式有效,但前提是块前后有空行。因此,对于我的正则表达式 URL2,pcgrep 将找不到 3(之前或之后没有换行符)和 4(文件末尾没有换行符)
我想知道是否可以使正则表达式完全匹配块而不需要这些空行。