77

空の行を削除せずに、コードから末尾の空白とタブを削除したい。

私は試した:

\s+$

と:

([^\n]*)\s+\r\n

しかし、それらはすべて空の行も削除しました。\s行末の文字にも一致すると思います。


更新(2016):

最近では、カスタム/ユーザー設定でSublimeのTrailingSpacesパッケージを使用して、このようなコードのクリーニングを自動化しています。

"trailing_spaces_trim_on_save": true

末尾の空白を強調表示し、保存時に自動的にトリミングします。

4

10 に答える 10

148

末尾のスペースとタブを削除してみてください。

[ \t]+$
于 2012-03-02T11:15:31.497 に答える
35

空白のみの行を保持しながら末尾の空白を削除するには、正規表現で空白以外の文字のの末尾の空白のみを削除する必要があります。したがって、最初に空白以外の文字をチェックする必要があります。これは、空白以外の文字が一致に含まれることを意味するため、置換に含める必要があります。

正規表現: ([^ \t\r\n])[ \t]+$

置換: \1または$1、IDEに応じて

于 2014-01-29T04:13:00.840 に答える
16

プラットフォームは指定されていませんが、C#( . NET)では次のようになります。

正規表現(複数行オプションを前提としています-以下の例ではそれを使用しています):

    [ \t]+(\r?$)

交換

    $1

「\r?$」の説明については、正規表現オプション、マルチラインモード(MSDN)を参照してください。

コード例

これにより、すべての行のすべての末尾のスペースとすべての末尾のTABが削除されます。

string inputText = "     Hello, World!  \r\n" +
                   "  Some other line\r\n" +
                   "     The last line  ";
string cleanedUpText = Regex.Replace(inputText,
                                     @"[ \t]+(\r?$)", @"$1",
                                     RegexOptions.Multiline);
于 2015-05-31T15:22:03.977 に答える
2

末尾と先頭の空白を見つけるための正規表現:

^[ \t]+|[ \t]+$
于 2018-01-18T06:06:17.897 に答える
2

Visual Studio 2012以降(.NET正規表現を使用)を使用している場合は、次の正規表現を使用して、空白行を削除せずに末尾の空白を削除できます。

交換(?([^\r\n])\s)+(\r?\n)

$1

ここに画像の説明を入力してください


いくつかの説明

かなり複雑な式が必要な理由は、文字クラスが\sスペース、タブ、および改行文字と一致するため、\s+空白のみを含む行のグループと一致するためです。$これは空白と改行文字のみを含む行のグループと一致するため、この正規表現に終了を追加することは役に立ちません。

(?([^\r\n])\s)また、(私が行ったように)式が何を意味するのかを正確に知りたい場合もあります。これはAlternationConstructであり、キャリッジリターンまたはラインフィードでない場合は、空白文字クラスとの一致を効果的に意味します。

交互構造には通常、真と偽の部分があります。

(?( expression ) yes | no )

ただし、この場合、false部分は指定されていません。

于 2018-07-13T10:46:47.437 に答える
2

[ |\t]+$空の置換で動作します。

\s+($)$1少なくともVisualStudioCodeでは、置換を使用しても機能します...

于 2018-12-10T21:36:42.750 に答える
0

空の行を無視して末尾の空白を削除するには、ポジティブルックビハインドを使用します。

(?<=\S)\s+$

後読みは、非空白(\ S)を一致から除外する方法です。

于 2016-04-16T23:46:45.893 に答える
0

空白の末尾のスペースを削除するには、次を使用します。

\n|^\s+\n

AtomおよびXcodeエディターでテストしました。

于 2019-04-09T10:46:45.170 に答える
-1

Javaの場合:



String str = "    hello world  ";

// prints "hello world" 
System.out.println(str.replaceAll("^(\\s+)|(\\s+)$", ""));


于 2019-01-29T06:33:36.443 に答える
-3

次のように簡単に使用できます。

var regex = /( )/g;

サンプル:ここをクリック

于 2019-02-12T05:17:31.327 に答える