web-dev-qa-db-ja.com

行内の単語間の複数のスペースの出現を検索する方法

行内の単語間の複数のスペースの出現を検索する方法

1. this is a line containing  2 spaces
2. this is a line containing   3 spaces
3. this is a line containing multiple spaces first  second   three   four

上記はすべて、この正規表現に有効な一致です。どの正規表現を使用する必要がありますか?

88
Sam
[ ]{2,}

スペース(2つ以上)

また、スペースの前後の単語が続くことを確認することもできます。 (タブや改行のような他の空白ではありません)

\w[ ]{2,}\w

同じですが、交換などのタスク用のスペースのみを選択(キャプチャ)することもできます

\w([ ]{2,})\w

または、スペースの前後に、Word文字だけでなく(空白を除く)何でもあることがわかります。

[^\s]([ ]{2,})[^\s]
149
AlexanderMP

簡単なソリューション:

/\s{2,}/

これは、1つ以上の空白文字のすべての出現に一致します。行全体を一致させる必要があるが、2つ以上の連続する空白文字が含まれている場合のみ:

/^.*\s{2,}.*$/

空白が連続している必要がない場合:

/^(.*\s.*){2,}$/
9
tdammers

[ ]{2,}を検索します。これにより、行内の任意の場所に2つ以上の隣接するスペースが見つかります。また、先頭と末尾のスペースだけでなく、スペースのみで構成される行にも一致します。そうしたくない場合は、Alexanderの答えをご覧ください。

実際には、括弧を省くことができます。明確にするためです(そうでない場合、繰り返されているスペース文字はそれほどよく見えません:))。

\s{2,}の問題は、Windowsファイルの改行とも一致することです(改行はCRLFまたは\r\nで一致する\s{2}で示されます)。

複数のタブとスペースも検索する場合は、[ \t]{2,}を使用します。

4
Tim Pietzcker

ここに私の解決策があります

[^0-9A-Z,\n]

これにより、すべての数字、コンマ、および改行が削除されますが、データセットなどの中間スペースが選択されます

  • 20171106,16632 ESCG0000018SB
  • 20171107,280 ESCG0000018SB
  • 20171106,70476 ESCG0000018SB
2
Ojitha

この正規表現はすべてのスペースを選択します。これを使用して、単一のスペースに置き換えることができます

\s+

pythonの例

result = re.sub('\s+',' ', data))
0
Owen Yuwono