Как я могу удалить пробел из середины строки, но оставить пробел в начале? - PullRequest
0 голосов
/ 18 апреля 2019

Несколько лет назад ВСЕ наши конфигурационные файлы Apache изменились так, что стали повсеместно (смотри ниже, понятия не имею, кто это сделал). Так как я обновляю с 2.2 до 2.4, это затрудняет поиск и замену всех необходимых изменений конфигурации.

Я думал избавиться от пробела в середине, но оставить пробел спереди. Я знаю, как заменить в начале, конце и везде. Я даже проконсультировался с несколькими книгами (например, регулярное выражение Джеффа Фридла), но не могу обдумать это - даже не уверен, возможно ли это.

  <Directory            "THEDIRECTORY">
    <LimitExcept        GET POST>
      deny              from all
    </LimitExcept>
    Options             -Indexes -MultiViews
    AllowOverride       All
    Order               allow,deny
    Allow               from all
  </Directory>

Что бы я хотел, это:

  <Directory "THEDIRECTORY">
    <LimitExcept GET POST>
      deny from all
    </LimitExcept>
    Options -Indexes -MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

Так что я могу легко найти и заменить изменения конфигурации для Apache 2.4

Я думал, что приходит с конца

s/\s+(.*)\s+(.*)\s+$/$1$2/g

но это не работает по ряду причин, в том числе из-за того, что количество замен меняется, они не фиксированные.

Помогите, пожалуйста, я не в курсе.

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Вы можете использовать это регулярное выражение для сопоставления с любым горизонтальным пробелом два или более раз и заменить его одним пробелом.

(?<=\S)\h{2,}(?=\S)

Это регулярное выражение гарантирует, что будет найдено совпадение только с пробелом, который окружен каким-либо непробельным символом, используя \S

Regex Demo

В случае, если \h не поддерживается в вашем регулярном выражении, вы можете использовать только пробел вместо \h и записать свое регулярное выражение как,

(?<=\S) {2,}(?=\S)

Демонстрация с использованием только пробела

0 голосов
/ 18 апреля 2019

Убедитесь, что добавили следующую строку в тег директории файла .htaccess или apache, если его там еще нет:

RewriteEngine On

Затем добавьте

RewriteCond% {REQUEST_URI} \ s

RewriteRule. * https://DOMAIN_NAME/ [R = 301, L]

Замена DOMAIN_NAME.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...