5

我无法想出正确的正则表达式字符串来删除多个 ? 人物。我想替换多个顺序?用一个?,但是要逃避哪些角色……正在逃避我。

示例输入:

有这玩意???要不然是啥???

期望的输出:

有这玩意吗?要不然是啥?

我在 PHP 中使用preg_replace() 。

4

7 回答 7

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

也就是说,您只需要转义问号,“\?+”中的加号表示我们正在用一个或多个字符替换每个实例,尽管我怀疑“\?{2,}”可能会更好,并且更高效(用两个或更多问号字符替换每个实例。

于 2008-09-25T22:41:36.247 回答
2

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

应该这样做。

您需要用反斜杠转义问号本身,然后用另一个反斜杠转义反斜杠本身。

在这种情况下,C# 的逐字字符串很好。

于 2008-09-25T22:41:57.493 回答
1

这应该有效(我已经测试过了):

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

这应该这样做

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

问号需要转义,m 用于多行模式。

这是一个很好的网站,可以在http://regex.larsolavtorvik.com/上试用

于 2008-09-25T22:47:43.533 回答
0

你试过模式吗

[?]+

更换??

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