1

改行をそのままにして、テキスト ファイルから各行の末尾のスペースを削除したいと考えています。これには、Visual Studio 2012 の正規表現機能を使用しています。

\s*\r?\n検索して置換しようとすると\r\n、予期しないすべての空の行も取り除かれます。

不足しているものはありますか?

4

3 に答える 3

8

救助に引き算を設定してください!

[\s-[\n]]+\n

...または( )改行( )以外の任意の空白文字( )。通常、範囲演算子またはリテラル ハイフン (文字クラス内の位置に応じて)として扱われ、リテラル ブラケットとして扱われます。ただし、ハイフンの後に文字クラスのようなものが続くと、集合減算演算子になります。\s-[\n]-[

ref:正規表現の文字クラス

于 2013-09-13T09:37:23.570 に答える
3

\r改行と改行\nを置き換えたくない場合に、それらを一致させようとしているのはなぜですか\r\n

代わりに、スペースとタブ、および削除するその他の空白文字のみを一致させ、次のように空の文字列に置き換えます。

[ \t]*$

これは、各行の末尾にある 0 個以上のスペースまたはタブに一致し、それらを空の文字列に置き換えます。

注: 複数行モードを使用する必要があるため$、すべての行の最後に一致します。

VS で複数行モードを有効にできない場合は、それを必要としない別の式を使用できます。

[ \t]*(?=\r?\n)

これは、オプションのキャリッジ リターンと改行が続く限り、つまり行末にある限り、0 個以上のタブとスペースに一致します。

于 2013-09-13T06:57:56.570 に答える