2016-04-15 13 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+です。

あなたは参照してくださいregex demo

\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+`) 

demo)を使用して(すなわち"`$1`")上記と同じパターンに置き換えることができます。

+0

本当にありがとうございました – user3637224

+0

うれしいです。それでも、そうではないと思う人がいます。 –

+0

@Downvoter、私の意見に同意しない場合は、あなたの解決策を投稿してください。 –