0

我将如何使用 str_replace 查找每个结尾方括号 ']' 并从末尾删除 2 个或更少的换行符。因此,如果 ] 之后有 1 或 2 个换行符,它将全部删除。如果有 3 个,你会在 ] 之后得到 1 个。4 之后你会得到 2 等等。

谢谢你的帮助

4

2 回答 2

0

既然您提到str_replace了,我假设您使用的是 PHP(如果是这种情况,您应该为此添加一个标签!)。并且由于您标记了正则表达式,您可能想要使用它preg_replace。那么这应该独立于平台工作:

$newstr = preg_replace('/\](?:\r\n|\n|\r){1,2}/', ']', $str);

$str显然你的原始字符串在哪里。

请注意,]被转义了,因为它是一个特殊的正则表达式字符(用于字符类)。圆括号仅包含所有可能的换行符的列表。是可选的?:,对于需要访问捕获的子模式的复杂正则表达式更相关(实际上是?:说,不要匹配这个子模式,因为我不需要它)。简单地说,匹配其中的{1,2}一两个。而且由于正则表达式默认是贪婪的,如果可以的话,它需要两个。

编辑:再想一想。您可以使用 来解决这个问题str_replace,但对于所有可能的换行符来说并不是那么好(因为str_replace不支持替代方案)。这个例子可能会给你一个想法。

于 2012-10-03T23:14:04.500 回答
0

str_replace ,

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

不支持正则表达式,你想要的是preg_replace

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

用类似的模式'/\](?:\r\n|\n|\r){0,2}/'替换']'

于 2012-10-03T23:15:47.773 回答