我将如何使用 str_replace 查找每个结尾方括号 ']' 并从末尾删除 2 个或更少的换行符。因此,如果 ] 之后有 1 或 2 个换行符,它将全部删除。如果有 3 个,你会在 ] 之后得到 1 个。4 之后你会得到 2 等等。
谢谢你的帮助
我将如何使用 str_replace 查找每个结尾方括号 ']' 并从末尾删除 2 个或更少的换行符。因此,如果 ] 之后有 1 或 2 个换行符,它将全部删除。如果有 3 个,你会在 ] 之后得到 1 个。4 之后你会得到 2 等等。
谢谢你的帮助
既然您提到str_replace
了,我假设您使用的是 PHP(如果是这种情况,您应该为此添加一个标签!)。并且由于您标记了正则表达式,您可能想要使用它preg_replace
。那么这应该独立于平台工作:
$newstr = preg_replace('/\](?:\r\n|\n|\r){1,2}/', ']', $str);
$str
显然你的原始字符串在哪里。
请注意,]
被转义了,因为它是一个特殊的正则表达式字符(用于字符类)。圆括号仅包含所有可能的换行符的列表。是可选的?:
,对于需要访问捕获的子模式的复杂正则表达式更相关(实际上是?:
说,不要匹配这个子模式,因为我不需要它)。简单地说,匹配其中的{1,2}
一两个。而且由于正则表达式默认是贪婪的,如果可以的话,它需要两个。
编辑:再想一想。您可以使用 来解决这个问题str_replace
,但对于所有可能的换行符来说并不是那么好(因为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}/'
替换']'