2016-04-15 43 views
1

請這裏有人糾正我的正則表達式,我試圖消除重音符正則表達式除去開頭和結尾的空格重音符內

內部空間

我的字符串看起來像

`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 

如何修整這是重音符裏面的字?有人指導我

+1

好吧,我會問:你爲什麼要這樣做?在把它放入查詢之前,你不能修剪它嗎? –

回答

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`"上文)。

+0

非常感謝你的工作 – user3637224

+0

很高興幫助。不過,有人認爲它沒有。 –

+0

@Downvoter,請張貼您的解決方案如果您不同意我的觀點, –