SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...

Какой regexp использовать?

Никак не соображу как заменить sprintf_w(%, ...) на _w(%) во всех случаях, получается покрыть только часть вариантов.
$text = 'fdf sprintf_w($af, $a, $b) sprintf_w("dff fg", $a, $b) 
sprintf_w("dff, (fg) (fs)", $a, $b) sprintf_w("dff, fg", $a, $b) 
sprintf_w(\'dff, "fg"\', $a) fdf 45';

т.е. дожно получится примерно следующее:
$text = 'fdf _w($af), $a, $b) _w("dff fg"), $a, $b) 
_w("dff, (fg) (fs)"), $a, $b) _w("dff, fg"), $a, $b) 
_w(\'dff, "fg"\'), $a) fdf 45';
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
@dodo512
(?xs)
sprintf_w\(
(
  (?: " (?: [^"\\] | \\. )*+ "
    | ' (?: [^'\\] | \\. )*+ '
    | [^"',()]+
    | \( (?1) \)
  )*+
)

https://regex101.com/r/99EvJP/1
https://ideone.com/GG85ka
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы