Как удалить пробелы между словами с помощью регулярного выражения в возвышенном тексте? - PullRequest
2 голосов
/ 19 июня 2020

У меня есть некоторые значения, которые выглядят так:

$lang['Delivery Charge'] = 'Delivery Charge';

$lang['Frequently Asked Questions'] = 'Frequently Asked Questions';

Я использую это регулярное выражение для выбора индекса переменной:

\$lang\['.*'\]

Как теперь можно Я заменяю пробелы между словами только для индексов переменных, а не для значений.

Я имею в виду, что мой окончательный результат будет выглядеть так:

$lang['DeliveryCharge'] = 'Delivery Charge';

$lang['FrequentlyAskedQuestions'] = 'Frequently Asked Questions';

Заранее спасибо!

1 Ответ

3 голосов
/ 19 июня 2020

Вы можете использовать

(?:\$\w+\['|\G(?!^))\w+\K\h+

Объяснение

  • (?: Группа без захвата
    • \$\w+\[' Match $ и 1+ символов слова и ['
    • | Или
    • \G(?!^) Утверждение позиции в конце предыдущего совпадения, а не в начале
  • ) Закрыть группу без захвата
  • \w+ Сопоставить 1+ символов слова
  • \K\h+ Сбросить буфер сопоставления и сопоставить 1+ горизонтальных пробельных символа

И замените пустой строкой

Regex demo

Чтобы также проверить закрытие ], где между ними не может быть квадратных скобок , вы можете добавить положительный взгляд вперед:

(?:\$\w+\['|\G(?!^))\w+\K\h+(?=[^][]*'])

Regex demo

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