Замените любое количество пробелов с помощью регулярных выражений

26609
Antonio

Как заменить любое количество последовательных пробелов, например, на вкладку в текстовом редакторе, поддерживающую регулярные выражения (например, Notepad ++)

Для пояснения: замена каждого вхождения одного или нескольких пробелов, например, на вкладку. Все места исчезнут после замены.

4
Означает ли «любое количество последовательных пробелов» один или несколько, или два, или больше? hBy2Py 9 лет назад 0
@ Брайан, я имел в виду один или несколько, я не внимательно прочитал ссылку, которую я разместил в своем ответе, в которой явно упоминается * несколько * пробелов. Я отредактировал свой ответ. Antonio 9 лет назад 0
Какого черта, почему * вопрос * был отклонен?!? Antonio 9 лет назад 0
Кто-то, вероятно, подумал, что это слишком тривиально. Синтаксис, который вам нужен для этого, является одним из самых основных элементов Regex. Тем не менее, до тех пор, пока вопрос не является дублирующим, может быть полезным иметь его как часть SE. hBy2Py 9 лет назад 1
@ Брайан Да, но я не думаю, что вопрос должен быть опущен, предположительно, из-за отсутствия исследований, когда также предоставляется ответ !!! ... Спасибо за отзыв! Antonio 9 лет назад 0
На самом деле звучит как отличный пост для Meta Super User. hBy2Py 9 лет назад 0
@ Брайан [Есть] (http://meta.superuser.com/questions/9240/protecting-or-marking-self-anspted-questions-to-avoid-lack-of-research-downvo) это так! Antonio 9 лет назад 1
@ Брайан Для полноты, это предложение на http://meta.stackexchange.com/questions/252190/marking-a-question-posted-with-an-answer-with-an-information-box (оно было сделано независимо от это вопрос, на который были разные мнения). Это было не очень успешно, но, по крайней мере, я был не единственным, кто думал, что эта функция может быть полезна :) Antonio 9 лет назад 0

2 ответа на вопрос

14
DavidPostill

How do I replace any number of spaces using regular expressions

Notepad++ Solution

To match one or more space characters:

  • Set "Find what" to + (space followed by +)

To match one of more whitespace characters (space, EOL, and tab all count as whitespace):

  • Set "Find what" to \s+

    Warning: Using \s+ will match end of line and therefore join multiple lines together (separated by the "replace with" string)

To replace with a tab character:

  • Set "Replace with" to \t

To enable regular expression (so the above special codes will work)

  • Select "Regular expression".

enter image description here

Source How to use regular expressions in Notepad++ (tutorial)

Это хорошая альтернатива, спасибо! Antonio 9 лет назад 0
2
Antonio

Taken from here:

Use as "find" expression:

 

namely a space followed by .

To replace with tab, enter ^t in the replace box. Don't forget to activate regular expressions.

This link covers the syntax of the given regex. Below is an extract of a relevant part.

Matches when the preceding character occurs at least n times, for example, bab will find 'baab', 'baaab' or 'baaaab' but NOT 'bab'. Values are enclosed in braces (curly brackets).

For the records, it has been tested on notepad++ (See here, courtesy of barlop). You can also put a \t in the replace box.

@DavidPostill Это работает для Notepad ++, это просто регулярное выражение. Не мс слово конкретное. смотрите здесь http://i.stack.imgur.com/z7OjC.png И выполнение `` лучше, чем ваше `+`, потому что ваш, как вы знаете, также заменит один / отдельный пробел. И это решение имеет гибкость, что число может быть изменено. Принимая во внимание, что + только для «одного или более», и, скорее всего, ОП означало 2 или более. barlop 9 лет назад 1
@DavidPostill, но ссылка Антонио была ужасной ссылкой, потому что Word отличается и может иметь свой собственный синтаксис. barlop 9 лет назад 0
@barlop Ссылка была первым результатом от Google. И работал. Я подумал, что было бы полезно получить ответ на вопрос также на сайте Stack. Я имел в виду 1 или более :), и я был удивлен, увидев 2 там, работал в моем случае использования, потому что в каждом случае у меня было по крайней мере 2 пробела. Теперь регулярное выражение намного понятнее, спасибо! Antonio 9 лет назад 0
@barlop Опять же, насчет ссылки, я думаю, что это совсем не плохое руководство, так как, несмотря на то, что это среда Word, она использует регулярные выражения, которые являются очень общими. Ему просто не хватает некоторых объяснений механизма (как вы должным образом предоставили, спасибо), которые, однако, вероятно, недостижимы для цели этой статьи. Antonio 9 лет назад 0
Regex не является по-настоящему универсальным. Различные реализации Regex поддерживают подмножество всех различных функциональных возможностей, и синтаксис для них может незначительно или резко различаться в разных реализациях. Например, по моему опыту, синтаксис Regex в MS Office VBA и в Python довольно сильно отличается. hBy2Py 9 лет назад 0
В вопросе также есть некоторая путаница между пробелами и пробелами. Где заголовок говорит пробел, а первая строка - пробел. Я думаю, что вы имели в виду пробелы .. barlop 9 лет назад 0
Я выпустил пониженное голосование, потому что вы должны были получить больше контента со ссылочного веб-сайта. Я считаю, что этот ответ был бы неполным, если бы никто не посещал этот сайт. Ramhound 9 лет назад 0
@Ramhound Вы говорите о текущей (на момент downvote) версии или об оригинальной версии ответа? Я полагаю, что сейчас это занимает все необходимые части (на самом деле, очень мало), теперь сайт в основном связан с признанием авторства. Antonio 9 лет назад 0
@Antonio - я оцениваю полезность ответа на основе текущей редакции. Ramhound 9 лет назад 0
@ Ramhound Мне трудно понять, как, убрав первую строку (подтверждение авторства), ответ можно считать недостаточно документированным. Antonio 9 лет назад 0
@Antonio - у меня есть причина понижения. Когда мое беспокойство - адрес, я переверну это. Но я не буду тратить больше времени на объяснение причины. Ramhound 9 лет назад 0
@Ramhound Вы сказали, что в ответе отсутствует фундаментальная информация, содержащаяся в ссылке. Я пытаюсь понять, на какую недостающую информацию вы ссылаетесь (которую вы не указали) и, возможно, улучшить ответ, чтобы не тратить свое время. Antonio 9 лет назад 0
@ Антонио - Честно. Я сделал этот комментарий только потому, что чувствую, что вы просто будете спорить обо всем, на что я на самом деле указываю. Ramhound 9 лет назад 0
@Ramhound Кажется, мы находимся на одном корабле (довольно многолюдном :)) Antonio 9 лет назад 0

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