我有以下文字:
74 avenue Emile Counor
Bat B2 Appt B104
我想替换所有换行符,仅当以下3个字母不是3个大写字母。
例如,上一个示例应该变为:
74 avenue Emile Counor Bat B2 Appt B104
但是
74 avenue Emile Counor
BAT B2 Appt B104
应该留下来。
我通过正则表达式工具尝试了很多解决方案,但无法满足我想要的效果。
这是我到目前为止所尝试的
preg_replace("/\n([^A-Z]{3})/", " $1", $str)
答案 0 :(得分:5)
如果你想否定LF之后的内容,那就是使用否定的lookahead:
$str = preg_replace("/\n(?![A-Z]{3})/", " ", $str);
请注意,前瞻只是一项测试,其内容并未出现在匹配结果中。
答案 1 :(得分:3)
搜索正则表达式:
'/\n(?![A-Z]{3})/'
的更换:
" "
<强>代码:强>
$str = "74 avenue Emile Counor\nBat B2 Appt B104";
$result = preg_replace('/\n(?![A-Z]{3})/', ' ', $str);
答案 2 :(得分:0)
我会用一种简单的方法。
查找:
(\n[A-Z]{3})|\n
替换:
$1
此外,此处没有简单方法来保留/添加额外的空格格式字符
我的意思是它可以通过回调来完成,但添加盲" "
是错误的。