我有一个查询,它会加载很多字段,并删除重复的空格,制表符和换行符。
regexp_replace(FIELD, E'[\|\\s\\n\\r]+', ' ', 'g' ) as FIELD
当我使用Sql Manager for PostgreSQL(Windows环境)测试时,它按预期工作。但...
但是这个查询是在PHP文件中,每天使用crontab(Linux环境)运行,它删除重复的空格,制表符,换行符和“s”
示例,前面的字符串:
"Small
unicorns are smart"
变成:
"mall unicorn are mart"
为什么会这样?
答案 0 :(得分:2)
你不想双重转义php中的\
(不像Java)。你实际上是在逃避反斜杠,将特殊字符转换成字母。或者,如果我完全错了,你实际上需要双重逃脱。
尝试:
[\|\s\n\r]+
另外,正如Maxim指出的那样,\ r和\ n已经包含在\ s中。
修改:
看起来你正试图在那里包含一个文字管道。在这种情况下,请使用[|\s]+
http://regex101.com/r/nE3dI8
如果您需要双重转义,[|\\\s]+