5

複数のシーケンスを削除するための正しい正規表現文字列を思いつくのに問題がありますか? 文字。複数のシーケンシャルを置き換えたいですか? しかし、どの文字をエスケープするか...私をエスケープしています。

入力例:

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

望ましい出力:

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

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

4

7 に答える 7

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

つまり、疑問符をエスケープするだけで済みます。"\?+" のプラス記号は、すべてのインスタンスを 1 つ以上の文字に置き換えることを意味しますが、"\?{2,}" の方がさらに優れていると思われます。より効率的です (すべてのインスタンスを 2 つ以上の疑問符文字に置き換えます。

于 2008-09-25T22:41:36.247 に答える
2

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

するべきです。

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

C# の逐語的な文字列が優れているのは、このような状況です。

于 2008-09-25T22:41:57.493 に答える
1

これはそれを行う必要があります

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

疑問符はエスケープする必要があり、m は複数行モード用です。

これはhttp://regex.larsolavtorvik.com/で試すのに適した Web サイトでした。

于 2008-09-25T22:47:43.533 に答える
1

これはうまくいくはずです(私はそれをテストしました):

preg_replace('/\?+/', '?', $subject);
于 2008-09-25T22:42:11.533 に答える
1
preg_replace('/\?{2,}/','?',$text)
于 2008-09-25T22:43:21.547 に答える
0

パターンは試しましたか?

[?]+

??の置換で

于 2008-09-25T22:53:16.017 に答える
0
str_replace('??', '?', 'Replace ??? in this text');
于 2008-09-25T23:40:28.650 に答える