2つ以上の繰り返しがあるときに空白を取り除き、スペースを1つだけ残すRegex式の後です。例えば複数の行があるときに余分なスペースを取り除く
このライン
The cow jumped over the moon
2つ以上の繰り返しがあるときに空白を取り除き、スペースを1つだけ残すRegex式の後です。例えば複数の行があるときに余分なスペースを取り除く
このライン
The cow jumped over the moon
は、この正規表現試しになるいくつかのケースで単語を分離する複数のスペースがある
The cow jumped over the moon
:
[ ]+
をし、それを交換します単一のスペース。
私が通常行う方法は、それ以上エントリが見つからなくなるまで、繰り返し2つのスペースを1つ置き換えます。これは、もちろん、複数のパスと、文字列の割り当てとガーベジコレクションの各ラウンドでの複数回の置換を意味しますが、オーバーヘッドが解析と正規表現の実行よりもかなり少なくなることがわかりました。 64スペースでも、修正するには7パスしかかかりません。また、典型的な文字列は2〜5スペースしか持たないので、より高速に動作します。
静的な正規表現を保つことができるどんな状況下でもこれがより高速であるとは思えません。 – annakata
string cleanedString = Regex.Replace(input, @"\s+", " ");
私はこれを常にsedで行います。
文字クラスの角かっこには、スペースとタブ文字があります。私は '+'を '\'で引用しました。これは、正規表現エンジンがリテラル "+"ではなく "1つ以上の"を意味するように "+"を取る場合には必要ではないかもしれません。
これはタブafaik – annakata
の方が良い表現になります。 – Cerebrus
ああ、そうです。明らかに私は「白い空間」の「白」をスキップし、単に「空間」を読みました。 – Gumbo