请有人在这里纠正我的regex,我正在试图移除坟墓口音中的空格。
我的字符串看起来像这个
`table_gis`.` latitude` = -7.759 AND CONCAT(`table_gis`.smsx,'_',`table_gis`.` stns `) IN ('SPX_0104','SDSX_133') AND,这是我的regex
preg_replace('/([`])([\s]+)([\w]+)([`])/', "$1$3$4",$str)我得到了输出
`table_gis`.`latitude` = -7.759 AND CONCAT(`table_gis`.smsx,'_',`table_gis`.` stns `) IN ('SPX_0104','SDSX_133') AND--我期望这是输出
`table_gis`.`latitude` = -7.759 AND CONCAT(`table_gis`.smsx,'_',`table_gis`.`stns`) IN ('SPX_0104','SDSX_133') AND我该如何修剪坟墓里的单词呢?谁来指引我
发布于 2016-04-15 09:19:25
您错过了将空白与\w+的右侧匹配。
您可以在\w+的两边添加可选的空白模式,并使用
`\s*(\w+)\s*`并替换为`$1`
$str = "`table_gis`.` latitude` = -7.759 AND CONCAT(`table_gis`.smsx,'_',`table_gis`.` stns `) IN ('SPX_0104','SDSX_133') AND";
$result = preg_replace('~`\s*(\w+)\s*`~', "`$1`", $str);
echo $result;
// => `table_gis`.`latitude` = -7.759 AND CONCAT(`table_gis`.smsx,'_',`table_gis`.`stns`) IN ('SPX_0104','SDSX_133') AND如果不想匹配任何`no_spaces_here`字符串(例如`table_gis`),可以使用
(?|`\s+(\w+)\s*`|`\s*(\w+)\s+`)(演示)并替换为与上面相同的模式(即"`$1`")。
https://stackoverflow.com/questions/36643020
复制相似问题