请有人在这里更正我的正则表达式,我正在尝试删除严重重音中的空格
我的字符串看起来像这样
`table_gis`.` latitude` = -7.759 AND CONCAT(`table_gis`.smsx,'_',`table_gis`.` stns `) IN ('SPX_0104','SDSX_133') AND
这是我的正则表达式
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
如何修剪严重重音内的单词?有人指导我
答案 0 :(得分:1)
您错过了匹配\w+
右侧的空白。
您可以在\w+
的两侧添加可选的空格模式并使用
`\s*(\w+)\s*`
并替换为`$1`
请参阅regex demo
$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+`)
(demo)并替换为与上述相同的模式(即"`$1`"
)。