Как искать вхождения более одного пробела между словами в строке

Как искать вхождения более чем одного пробела между словами в строке

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

Все вышеперечисленное является допустимым совпадением для этого регулярного выражения. Какое регулярное выражение следует использовать?

Ответ 1

[ ]{2,}

ПРОСТРАНСТВО (2 или более)

Вы также можете проверить, что до и после этих пробелов следуют. (не другие пробелы, такие как вкладки или новые строки)

\w[ ]{2,}\w

то же самое, но вы также можете выбрать (захватить) только пространства для задач, таких как замена

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

или увидеть, что перед и после пробелов есть что-нибудь, а не только слова (кроме пробелов)

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

Ответ 2

Простое решение:

/\s{2,}/

Это соответствует всем вхождениям одного или нескольких символов пробелов. Если вам нужно сопоставить всю строку, но только если она содержит два или более последовательных символа пробела:

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

Если пробелы не обязательно должны быть последовательными:

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

Ответ 3

Найдите [ ]{2,}. Это найдет два или более смежных пространства в любой точке линии. Он также будет соответствовать ведущим и конечным пространствам, а также линиям, состоящим исключительно из пробелов. Если вы этого не хотите, проверьте ответ Александра.

Собственно, вы можете оставить скобки, они просто для ясности (в противном случае повторяющийся пробельный символ не так хорошо видится:)).

Проблема с \s{2,} заключается в том, что она также будет соответствовать символам новой строки в файлах Windows (где символы новой строки обозначаются символами CRLF или \r\n, которые соответствуют \s{2}.

Если вы также хотите найти несколько вкладок и пробелов, используйте [ \t]{2,}.

Ответ 4

Вот мое решение

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

Это приведет к удалению всех цифр, запятых и новых строк, но выберите среднее пространство, такое как набор данных

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

Ответ 5

Это регулярное выражение выбирает все пробелы, вы можете использовать это и заменить его одним пробелом

\s+

пример в питоне

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