質問

複数のシーケンスを削除するための正しい正規表現文字列を見つけるのに問題がありますか?文字。複数のシーケンシャルを置き換えたいですか?単一の?を使用しますが、どの文字をエスケープするか...エスケープされます。

入力例:

  

このことは?または何?

望ましい出力:

  

これはオンですか?または何?

PHPで preg_replace()を使用しています。

役に立ちましたか?

解決

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

つまり、疑問符をエスケープする必要があるのは、" \?+"のプラス記号だけです。 " \?{2、}"が疑われるが、すべてのインスタンスを1つ以上の文字で置き換えることを意味します。より良いとより効率的かもしれません(すべてのインスタンスを2つ以上の疑問符文字で置き換えます。

他のヒント

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

実行する必要があります。

疑問符自体をバックスラッシュでエスケープしてから、別のバックスラッシュでバックスラッシュ自体をエスケープする必要があります。

このような状況では、C#の逐語的文字列いいね。

これは動作するはずです(テスト済みです):

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

これでうまくいきます

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

疑問符はエスケープする必要があり、mはマルチラインモード用です。

これは http://regex.larsolavtorvik.com/

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

パターンを試しましたか

[?]+

の代わりに?

scroll top