Я пытаюсь удалить один или несколько пробелов после открытых круглых скобок и перед закрывающих круглых скобок как для круглых, так и для квадратных скобок.
$s = "This is ( a sample ) [ string ] to play with"
ожидаемый результат:
"This is (a sample) [string] to play with"
Удалось убрать пробел перед:
$s = preg_replace('/\s+(?=[\])])/', '', $s);
результат:
"This is ( a sample) [ string] to play with"
но не пробелы после круглые скобки!






Попробуйте это регулярное выражение:
(?<=[([]) +| +(?=[)\]])
Замените совпадения пустой строкой
Объяснение:
(?<=[([]) + - соответствует 1+ вхождению пробела, которому предшествует [ или (| - ИЛИ+(?=[)\]]) - соответствует 1+ вхождению пробела, за которым следует ) или ]@revo Сначала я думал о том же, но мне не понравилось, что количество шагов увеличилось почти вдвое, поэтому я остановился на одном персонаже ?
Я собирался написать то же самое
Не полагайтесь на эти цифры. Проверьте шаги отладчика. На самом деле это уменьшает количество шагов, и это очевидно ? @ctwheels
или еще три символа даже
[[(]\K +| +(?=[])])? @ctwheels