0

引用符内の次のスペースを削除したいのですが、一致する引用符内の引用符の前後に連続するスペースだけを取り除きます。

this is " a " quoted "string " with " lots" of "edge " cases " that " need spaces removed. It \" also \" has "escaped" quotes just to really annoy you!

次のように見えるはずです...

this is "a" quoted "string" with "lots" of "edge" cases "that" need spaces removed. It \"also\" has "escaped" quotes just to really annoy you!

これは単一の正規表現でも可能ですか? そうでない場合は、どのような解決策でもかまいません。

4

3 に答える 3

0

これは少し簡単だと思うので、何かが足りないかもしれません:

str.gsub(/("|\\").*?\1/){|x| x.delete(' ')}

ただし、引用符の間のスペースはすべて削除します。これはより正しいですが、少し醜いです:

str.gsub(/("|\\")(.*?)("|\\")/){$1+$2.strip+$3}
于 2013-11-08T08:19:07.187 に答える
0
str.gsub /(\\?")\s*([^"\s]+)\s*(\\?")/, '\1\2\3'
于 2013-11-08T09:00:18.570 に答える