Ersetzen Sie eine beliebige Anzahl von Leerzeichen mit regulären Ausdrücken

26698
Antonio

Wie kann ich eine beliebige Anzahl aufeinander folgender Leerzeichen ersetzen, z. B. eine Registerkarte in einem Texteditor, die reguläre Ausdrücke unterstützt (wie Notepad ++)

Um dies zu klären: Ersetzen Sie jedes Vorkommen von einem oder mehreren Leerzeichen durch (z. B.) eine Registerkarte. Alle Felder werden nach der Ersetzung weg sein.

4
Bedeutet "beliebig viele aufeinanderfolgende Leerzeichen" einen oder mehrere oder zwei oder mehr? hBy2Py vor 9 Jahren 0
@Brian Ich meinte eine oder mehrere, ich hatte den Link in meiner Antwort nicht sorgfältig gelesen, der * mehrere * Leerzeichen deutlich erwähnt. Ich habe meine Antwort bearbeitet. Antonio vor 9 Jahren 0
Was zum Teufel, warum wurde die Frage abgelehnt?!? Antonio vor 9 Jahren 0
Jemand hielt es wahrscheinlich für zu trivial. Die dafür benötigte Syntax ist eines der grundlegendsten Elemente von Regex. Solange die Frage nicht doppelt ist, kann es durchaus sinnvoll sein, sie als Teil von SE zu haben. hBy2Py vor 9 Jahren 1
@Brian Yep, aber ich denke nicht, dass eine Frage wegen mangelnder Recherche herabgestuft werden sollte, wenn auch eine Antwort gegeben wird !!! ... Danke für die Rückmeldung! Antonio vor 9 Jahren 0
Klingt eigentlich nach einem großartigen Post für Meta Super User. hBy2Py vor 9 Jahren 0
@Brian [There] (http://meta.superuser.com/questions/9240/protecting-or-marking-self-answered-questions-to-avoid-lack-of-research-downvo) ist es! Antonio vor 9 Jahren 1
Zur Vollständigkeit ist dies der Vorschlag unter http://meta.stackexchange.com/questions/252190/marking-a-question-posted-with-an-answer-with-aninformation-box (wurde unabhängig von diese Frage, zu der es unterschiedliche Meinungen gab). Es war nicht sehr erfolgreich, aber zumindest war ich nicht der einzige, der dachte, dass das Feature nützlich sein könnte :) Antonio vor 9 Jahren 0

2 Antworten auf die Frage

14
DavidPostill

Wie kann ich eine beliebige Anzahl von Leerzeichen mit regulären Ausdrücken ersetzen?

Notepad ++ Lösung

So passen Sie ein oder mehrere Leerzeichen an:

  • Setze "Finde was" auf +( spacegefolgt von +)

So passen Sie einen oder mehrere Whitespace-Zeichen an ( space, EOL und taballe zählen als Whitespace):

  • Stellen Sie "Find what" auf \s+

    Warnung: Die Verwendung \s+stimmt mit dem Zeilenende überein und fügt daher mehrere Zeilen zusammen (getrennt durch die Zeichenfolge "Ersetzen durch").

Durch ein Tabulatorzeichen ersetzen:

  • Setzen Sie "Ersetzen mit" auf \t

Um reguläre Ausdrücke zu aktivieren (damit die oben genannten speziellen Codes funktionieren)

  • Wählen Sie "Regulärer Ausdruck".

enter image description here

Quelle So verwenden Sie reguläre Ausdrücke in Notepad ++ (Tutorial)

Dies ist eine gute Alternative, danke! Antonio vor 9 Jahren 0
2
Antonio

Von hier genommen :

Verwenden Sie als Ausdruck "find":

 

nämlich ein Leerzeichen, gefolgt von .

Geben Sie zum Ersetzen mit der Registerkarte ^tdas Ersetzungsfeld ein. Vergessen Sie nicht, reguläre Ausdrücke zu aktivieren.

Dieser Link deckt die Syntax der angegebenen Regex ab. Unten ist ein Auszug eines relevanten Teils.

Entspricht, wenn das vorhergehende Zeichen mindestens n-mal vorkommt, z. B. ba b findet 'baab', 'baaab' oder 'baaaab', aber NICHT 'bab'. Die Werte werden in geschweifte Klammern eingeschlossen.

Für die Aufzeichnungen wurde es auf Notepad ++ getestet (siehe hier, mit freundlicher Genehmigung von barlop). Sie können auch eine \t in das Ersetzungsfeld einfügen.

@DavidPostill Es funktioniert für Notepad ++, es ist nur ein regulärer Ausdruck. Nicht wortspezifisch. Siehe hier http://i.stack.imgur.com/z7OjC.png Und `` zu tun ist besser als Ihr `+`, da Ihr, wie Sie wissen, auch ein einzelnes / einzelnes Feld ersetzt. Und diese Lösung bietet die Flexibilität, dass die Anzahl geändert werden kann. Wohingegen + nur für "eins oder mehr" steht und das OP wahrscheinlich 2 oder mehr bedeutet. barlop vor 9 Jahren 1
@DavidPostill, aber der Link von Antonio war eine schreckliche Referenz, weil Word anders ist und eine eigene Syntax haben kann. barlop vor 9 Jahren 0
@barlop Der Link war das erste Ergebnis von Google. Und hat gearbeitet. Ich dachte, es könnte nützlich sein, die Frage auch auf der Stack-Website zu beantworten. Ich meinte 1 oder mehr :) und ich war überrascht, die 2 dort zu sehen, arbeitete in meinem Anwendungsfall, weil ich bei jedem Auftreten mindestens 2 Leerzeichen hatte. Jetzt ist der reguläre Ausdruck viel klarer, danke! Antonio vor 9 Jahren 0
@ barlop Nochmals, was den Link angeht, denke ich, dass dies kein schlechter Leitfaden ist, da er trotz seiner Word-Umgebung reguläre Ausdrücke verwendet, die sehr allgemein sind. Es fehlen lediglich einige Erklärungen des Mechanismus (wie Sie es gebührend danke), die jedoch für das Ziel dieses Artikels wahrscheinlich unerreichbar sind. Antonio vor 9 Jahren 0
Regex ist nicht wirklich universell. Verschiedene Implementierungen von Regex unterstützen eine Untergruppe aller verschiedenen Funktionalitäten, und die Syntax für sie kann sich geringfügig oder dramatisch zwischen den Implementierungen unterscheiden. Nach meiner eigenen Erfahrung unterscheidet sich beispielsweise die Regex-Syntax in MS Office VBA und Python erheblich. hBy2Py vor 9 Jahren 0
Es gibt auch eine Mischung aus Leerzeichen und Leerzeichen in der Frage. Dabei steht der Titel für Leerzeichen und die erste Zeile für Leerzeichen. Ich glaube, du meintest Whitespaces .. barlop vor 9 Jahren 0
Ich habe ein Downvote abgegeben, weil Sie mehr Inhalt von der referenzierten Website hätten ziehen sollen. Ich halte diese Antwort für unvollständig, wenn man diese Website NICHT besuchen würde. Ramhound vor 9 Jahren 0
@Ramhound Sprichst du von der aktuellen (zum Zeitpunkt der Downvote) Version oder von der Originalversion der Antwort? Ich glaube, wie es jetzt ist, braucht es alle notwendigen Teile (in der Tat sehr wenig), jetzt ist die Website hauptsächlich mit der Anerkennung der Urheberschaft verbunden. Antonio vor 9 Jahren 0
@Antonio - Ich bewerte die Nützlichkeit der Antwort anhand der aktuellen Überarbeitung. Ramhound vor 9 Jahren 0
@Ramhound Ich habe Mühe zu verstehen, wie, wenn die erste Zeile entfernt wird (Urheberschaftsbestätigung), die Antwort als nicht ausreichend dokumentiert betrachtet werden kann. Antonio vor 9 Jahren 0
@Antonio - Ich habe den Grund für das Downvote angegeben. Wenn mein Anliegen die Adresse ist, werde ich es aufheben. Aber ich werde nicht mehr Zeit damit verbringen, den Grund zu erklären. Ramhound vor 9 Jahren 0
@Ramhound Sie sagten, dass der Antwort grundlegende Informationen fehlen, die im Link enthalten sind. Ich versuche zu verstehen, auf welche fehlenden Informationen Sie sich beziehen (die Sie nicht angegeben haben) und möglicherweise die Antwort verbessern, um Ihre Zeit nicht zu verschwenden. Antonio vor 9 Jahren 0
@Antonio - ehrlich. Ich habe diesen Kommentar nur gemacht, da ich der Meinung bin, dass Sie sich über alles streiten, worauf ich eigentlich hinweise. Ramhound vor 9 Jahren 0
@ Ramhound Es scheint, wir sind auf demselben Schiff (ziemlich voll :)) Antonio vor 9 Jahren 0