行内の単語間の複数のスペースの出現を検索する方法
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
上記はすべて、この正規表現に有効な一致です。どの正規表現を使用する必要がありますか?
[ ]{2,}
スペース(2つ以上)
また、スペースの前後の単語が続くことを確認することもできます。 (タブや改行のような他の空白ではありません)
\w[ ]{2,}\w
同じですが、交換などのタスク用のスペースのみを選択(キャプチャ)することもできます
\w([ ]{2,})\w
または、スペースの前後に、Word文字だけでなく(空白を除く)何でもあることがわかります。
[^\s]([ ]{2,})[^\s]
簡単なソリューション:
/\s{2,}/
これは、1つ以上の空白文字のすべての出現に一致します。行全体を一致させる必要があるが、2つ以上の連続する空白文字が含まれている場合のみ:
/^.*\s{2,}.*$/
空白が連続している必要がない場合:
/^(.*\s.*){2,}$/
[ ]{2,}
を検索します。これにより、行内の任意の場所に2つ以上の隣接するスペースが見つかります。また、先頭と末尾のスペースだけでなく、スペースのみで構成される行にも一致します。そうしたくない場合は、Alexanderの答えをご覧ください。
実際には、括弧を省くことができます。明確にするためです(そうでない場合、繰り返されているスペース文字はそれほどよく見えません:))。
\s{2,}
の問題は、Windowsファイルの改行とも一致することです(改行はCRLF
または\r\n
で一致する\s{2}
で示されます)。
複数のタブとスペースも検索する場合は、[ \t]{2,}
を使用します。
ここに私の解決策があります
[^0-9A-Z,\n]
これにより、すべての数字、コンマ、および改行が削除されますが、データセットなどの中間スペースが選択されます
この正規表現はすべてのスペースを選択します。これを使用して、単一のスペースに置き換えることができます
\s+
pythonの例
result = re.sub('\s+',' ', data))