改行をそのままにして、テキスト ファイルから各行の末尾のスペースを削除したいと考えています。これには、Visual Studio 2012 の正規表現機能を使用しています。
\s*\r?\n
検索して置換しようとすると\r\n
、予期しないすべての空の行も取り除かれます。
不足しているものはありますか?
改行をそのままにして、テキスト ファイルから各行の末尾のスペースを削除したいと考えています。これには、Visual Studio 2012 の正規表現機能を使用しています。
\s*\r?\n
検索して置換しようとすると\r\n
、予期しないすべての空の行も取り除かれます。
不足しているものはありますか?
救助に引き算を設定してください!
[\s-[\n]]+\n
...または( )改行( )以外の任意の空白文字( )。通常、範囲演算子またはリテラル ハイフン (文字クラス内の位置に応じて)として扱われ、リテラル ブラケットとして扱われます。ただし、ハイフンの後に文字クラスのようなものが続くと、集合減算演算子になります。\s
-
[\n]
-
[
ref:正規表現の文字クラス
\r
改行と改行\n
を置き換えたくない場合に、それらを一致させようとしているのはなぜですか\r\n
。
代わりに、スペースとタブ、および削除するその他の空白文字のみを一致させ、次のように空の文字列に置き換えます。
[ \t]*$
これは、各行の末尾にある 0 個以上のスペースまたはタブに一致し、それらを空の文字列に置き換えます。
注: 複数行モードを使用する必要があるため$
、すべての行の最後に一致します。
VS で複数行モードを有効にできない場合は、それを必要としない別の式を使用できます。
[ \t]*(?=\r?\n)
これは、オプションのキャリッジ リターンと改行が続く限り、つまり行末にある限り、0 個以上のタブとスペースに一致します。