Pergunta

Estou tendo problemas para criar a string regex correta para remover uma sequência de múltiplas? personagens. Eu quero substituir mais de um seqüencial? com um único?, Mas quais personagens escaparem ... está me escapando.

Exemplo de entrada:

Isto está ligado??? ou o que???

Saída desejada:

Isto está ligado? ou o que?

estou a usar preg_replace () em php.

Foi útil?

Solução

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

Isto é, você só precisa escapar do ponto de interrogação, a vantagem em "?+" Significa que estamos substituindo todas as instâncias por um ou mais caracteres, embora eu suspeite "? {2,}" pode ser ainda melhor e Mais eficiente (substituindo todas as instâncias por dois ou mais caracteres de marcas de interrogação.

Outras dicas

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

deve fazer isso.

Você precisa escapar do ponto de interrogação com uma barra de barriga e, em seguida, escapar da barra de barriga com outra barra de barra.

São situações como esta onde C#é Strings literal são bonitos.

Isso deve funcionar (eu testei):

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

Isso deve servir

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

o ponto de interrogação precisa ser escapado e m é para o modo multilinha.

Este foi um bom site para experimentar http://regex.larsolavtorvik.com/

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

Você já experimentou o padrão

[?]+

com a substituição de ? ?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top