PHP正则表达式删除多个?

时间:2020-03-06 14:45:18  来源:igfitidea点击:

我在想出正确的正则表达式字符串以删除多个序列时遇到麻烦?人物。我要替换多个序列吗?带有一个?,但是哪些字符要逃脱...逃脱了我。

输入示例:

Is this thing on??? or what???

所需的输出:

Is this thing on? or what?

我在PHP中使用preg_replace()。

解决方案

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

也就是说,我们只需要转义问号," \?+"中的加号表示我们将每个实例替换为一个或者多个字符,尽管我怀疑" \?{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');