Не мог соответствовать одному или нескольким пробелам в Vim

Вы можете заменить класс символов глобальным флагом.

/[(),]/g

function fixString(text){
   return text.replace(/[(),]/g, " ");
}

console.log(fixString(",1)2(3"));

43
задан Léo Léopold Hertz 준영 8 May 2009 в 09:54
поделиться

9 ответов

Набор

/^ \+

В командном режиме будет соответствовать один или несколько пробелов в начале строки.

Набор

/^\s\+

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

79
ответ дан 26 November 2019 в 22:38
поделиться

Кстати, не удивляйтесь, если вы используете опцию hlsearch и весь ваш текст загорается после ввода / * - вместо просто пространства. Это потому, что нулевые пробелы могут совпадать где угодно!

Поэтому сопоставление нуля или более чего-либо полезно только в сочетании с чем-то другим.

Добавление после прояснения вопроса:

Чтобы соответствовать одному или нескольким пробелам в начале из строки do:

/^\s\+

См .:

:help whitespace
:help /\+
13
ответ дан 26 November 2019 в 22:38
поделиться

Если я правильно понял ..

/ * будет соответствовать 0 или более пробелам

/ {0, n} будет соответствовать 0 или n пробелам (где n - число)

Чтобы соответствовать 1 или более пробелам, начинающимся с начала строки:

/^ \+
7
ответ дан 26 November 2019 в 22:38
поделиться

Пробелы в начале строки в Vim:

/^  *

То есть:

  • '/' для поиска.
  • '^' для начала строки.
  • '' как минимум для одного пробела.
  • '*' для нуля или более пробелов после этого.
6
ответ дан 26 November 2019 в 22:38
поделиться

Если вы хотите найти какой-либо пробел (будь то пробел или табуляция), применимо следующее регулярное выражение

^[\s]*

^ соответствует началу строки
[\ s] / [\ t] соответствует пробелу или символу табуляции (оба работают, хотя в соответствии с документацией vim вы должны использовать [\ s]
] * обеспечивает повторение, 0 или более.

, конечно, используя / для поиска, как упомянуто другими.

3
ответ дан 26 November 2019 в 22:38
поделиться

Вы почти у цели , Вам не нужно (). Регулярное выражение просто "^ *" , и в Vim вы выполняете поиск с помощью /, поэтому вы вводите / ^ *

Обратите внимание, что это соответствует каждой строке , потому что каждая строка начинается с нуля или более пробелов! Итак, вы действительно намерены это? Если вы имели в виду «один или несколько пробелов», вам необходимо заменить * на \ + (в большинстве языков регулярных выражений это ' s + , но + экранируется в vim). Итак, / ^ \ +

1
ответ дан 26 November 2019 в 22:38
поделиться

Я думаю, что вы действительно можете сопоставить пробелы до какого-то непробельного символа, верно? Попробуйте это:

^\( \+\)

Или, для любого типа пробела:

^\(\s\+\)

В Vim необходимо экранировать регулярные выражения (,) и +. Кроме того, если вы планируете использовать обратную ссылку, синтаксис будет \ 1 (например, первая группа), а не $ 1, как в Perl.

0
ответ дан 26 November 2019 в 22:38
поделиться

/ * соответствует нулю или нескольким пробелам.

Пример:

/ foo * bar будет соответствовать foobar , foo bar , foo bar , etcetera`.

Обратите внимание, что если вы хотите использовать круглые скобки, как в вашем примере, вам нужно экранировать их с помощью \\ . Выражения Vim не являются стандартными регулярными выражениями Perl или регулярными выражениями POSIX. Ваш пример может быть следующим:

\\( \\)*
0
ответ дан 26 November 2019 в 22:38
поделиться

Чтобы сопоставить пробелы или символы табуляции в начале строки, вы также можете использовать: ^ \ s * .

0
ответ дан 26 November 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: