Как искать вхождения более одного пробела между словами в строке - PullRequest
88 голосов
/ 21 сентября 2010

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

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

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

Ответы [ 5 ]

146 голосов
/ 21 сентября 2010
[ ]{2,}

ПРОБЕЛ (2 или более)

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

\w[ ]{2,}\w

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

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

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

[^\s]([ ]{2,})[^\s]
9 голосов
/ 21 сентября 2010

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

/\s{2,}/

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

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

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

/^(.*\s.*){2,}$/
4 голосов
/ 21 сентября 2010

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

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

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

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

2 голосов
/ 04 декабря 2017

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

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

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

  • 20171106,16632 ESCG0000018SB
  • 20171107,280 ESCG0000018SB
  • 20171106,70476 ESCG0000018SB
0 голосов
/ 06 июня 2019

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

\s+

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

result = re.sub('\s+',' ', data))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...