title: Using sed with regex to remove text from a file
body: <p>I'm trying to use sed with regex to remove specific patterns from a file.
  Here is the command I'm using:</p>
  <pre><code>sed '/location .*?\/\s+{(?:[\w\W]+?)}\s*(?=(?:location|$))/d'
  </code></pre>
  <p>Here is a sample text I'm testing with:</p>
  <pre><code>location / {
                  try_files $uri $uri/ /index.php?$args;
  }
  location ~*  .(jpg|jpeg|png|gif|ico|css|js)$ {
              expires 365d;
          }
  
          location ~*  .(pdf)$ {
              expires 30d;
          }
  
          location ~ \.php$
                  {
                          try_files $uri =404;
                          fastcgi_split_path_info ^(.+\.php)(/.+)$;
                          include /etc/nginx/fastcgi_params;
                          fastcgi_index index.php;
                          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                          include /etc/nginx/nginx_limits.conf;
                          if (-f $request_filename)
                          {
                                  fastcgi_pass unix:/usr/local/php73/sockets/rgeoipdsm1.sock;
                          }
                  }
          location ~ / {
                          try_files $uri $uri/ /index.php?$args;
          }
  
          location ^ / {
                          try_files $uri $uri/ /index.php?$args;
          }
  
          location ~ / {
                          if (-f $request_filename)
                          {
                                  fastcgi_pass unix:/usr/local/php73/sockets/rgeoipdsm1.sock;
                          }
                          try_files $uri $uri/ /index.php?$args;
          }
  
  location ~ \.png {
  
  }
  
  location ~ / {
  }
  </code></pre>
  <p>What I'm expecting to see after running sed:</p>
  <pre><code>location ~*  .(jpg|jpeg|png|gif|ico|css|js)$ {
          expires 365d;
      }
      
      location ~*  .(pdf)$ {
          expires 30d;
      }
  
          location ~ \.php$
                  {
                          try_files $uri =404;
                          fastcgi_split_path_info ^(.+\.php)(/.+)$;
                          include /etc/nginx/fastcgi_params;
                          fastcgi_index index.php;
                          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                          include /etc/nginx/nginx_limits.conf;
                          if (-f $request_filename)
                          {
                                  fastcgi_pass unix:/usr/local/php73/sockets/rgeoipdsm1.sock;
                          }
                  }
      location ~ \.png {
  
  }
  </code></pre>
  <p>But after running sed I get no changes at all, it seems to match nothing.
  Is it possible to fine-tune this command (perhaps with escape characters?) so it'll remove the required patterns?</p>