複数のシーケンスを削除するための正しい正規表現文字列を思いつくのに問題がありますか? 文字。複数のシーケンシャルを置き換えたいですか? しかし、どの文字をエスケープするか...私をエスケープしています。
入力例:
これはオンですか?または何???
望ましい出力:
これはオンですか?または何?
PHP でpreg_replace()を使用しています。
複数のシーケンスを削除するための正しい正規表現文字列を思いつくのに問題がありますか? 文字。複数のシーケンシャルを置き換えたいですか? しかし、どの文字をエスケープするか...私をエスケープしています。
入力例:
これはオンですか?または何???
望ましい出力:
これはオンですか?または何?
PHP でpreg_replace()を使用しています。
preg_replace('{\?+}', '?', 'Is this thing on??? or what???');
つまり、疑問符をエスケープするだけで済みます。"\?+" のプラス記号は、すべてのインスタンスを 1 つ以上の文字に置き換えることを意味しますが、"\?{2,}" の方がさらに優れていると思われます。より効率的です (すべてのインスタンスを 2 つ以上の疑問符文字に置き換えます。
preg_replace( '{\\?+}', '?', $text );
するべきです。
疑問符自体をバックスラッシュでエスケープし、バックスラッシュ自体を別のバックスラッシュでエスケープする必要があります。
C# の逐語的な文字列が優れているのは、このような状況です。
これはそれを行う必要があります
preg_replace('/(\?+)/m', '?', 'what is going in here????');
疑問符はエスケープする必要があり、m は複数行モード用です。
これはhttp://regex.larsolavtorvik.com/で試すのに適した Web サイトでした。
これはうまくいくはずです(私はそれをテストしました):
preg_replace('/\?+/', '?', $subject);
preg_replace('/\?{2,}/','?',$text)
パターンは試しましたか?
[?]+
?
?の置換で
str_replace('??', '?', 'Replace ??? in this text');