Регулярное выражение PHP для удаления нескольких?-метки

StackOverflow https://stackoverflow.com/questions/136642

  •  02-07-2019
  •  | 
  •  

Вопрос

У меня возникли проблемы с поиском правильной строки регулярного выражения для удаления последовательности из нескольких?Персонажи.Я хочу заменить более одного последовательного?с одним ?, но какие символы использовать, чтобы escape...is убежать от меня.

Пример ввода:

Эта штука включена???или что???

Желаемый результат:

Эта штука включена?или что?

Я использую preg_replace() в PHP.

Это было полезно?

Решение

preg_replace('{\?+}', '?', 'Is this thing on??? or what???');

То есть вам нужно только избежать вопросительного знака, плюс в "\?+" означает, что мы заменяем каждый экземпляр одним или несколькими символами, хотя я подозреваю, что "\?{2,}" может быть даже лучше и эффективнее (замена каждого экземпляра двумя или более символами вопросительного знака.

Другие советы

preg_replace( '{\\?+}', '?', $text );

должен это сделать.

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

Это ситуации, подобные этой, когда C # дословные строки они милые.

Это должно сработать (я это протестировал):

preg_replace('/\?+/', '?', $subject);
preg_replace('/\?{2,}/','?',$text)

это должно сработать

preg_replace('/(\?+)/m', '?', 'what is going in here????');

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

Это был хороший веб-сайт, на котором можно было это попробовать http://regex.larsolavtorvik.com/

str_replace('??', '?', 'Replace ??? in this text');

Вы пробовали использовать этот шаблон

[?]+

с заменой ? ?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top