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