Montag, Januar 27, 2020

regulären Ausdruck zu entfernen, das erste Wort jeder Zeile

Ich versuche einen regulären Ausdruck, der packt das erste Wort (einschließlich möglicher führender white space) in jeder Zeile. Hier ist es:

/^([\s]+[\S]*).*$/\1//

Dieser code scheint nicht zu funktionieren (siehe http://regexr.com?34o6m). Der code soll

  1. Beginnen am Anfang der Zeile
  2. Erstellen Sie eine Aufnahme-Gruppe, wo es Orte das erste Wort (mit möglichen führenden Leerzeichen)
  3. Schnappen Sie sich den rest der Zeile
  4. Ersetzen Sie die gesamte Zeile mit nur die innerhalb der ersten capturing group

Versuchte ich eine andere version auch:

/\S(?<=\s).*^//

Sieht es aus wie dieser Ausfall zu (http://regexr.com?34o6s). Das Ziel war es, die hier

  1. Finde das erste nicht-whitespace-Zeichen.
  2. Blick hinter um sicherzustellen, dass es hat ein Leerzeichen dahinter (also nicht den ersten Buchstaben der Zeile).
  3. Schnappen Sie sich den rest der Zeile.
  4. Löschen alles, was der Ausdruck genau ergriff.

Jeder Einblick auf das, was schief geht, wäre sehr dankbar. Danke!

  • Wenn die führenden whitespace-Zeichen ist nur dann möglich, sollten Sie ein Sternchen, das kein plus, nach dem ersten [\s]
  • Vielleicht verwenden Sie das Wort-Grenze-Ding, etwa so: /^([\s]*.?[\b]).*/ (nicht getestet, und ich bezweifle, dass es wird funktionieren wie es ist, aber ich werde weiter daran gearbeitet)
InformationsquelleAutor elju | 2013-05-02

4 Kommentare

  1. 1

    Sie verwechseln Ihre + und *.

    /^([\s]*[\S]+).*$/\1/

    Dies bedeutet null oder mehr Leerzeichen, gefolgt durch ein oder mehrere nicht-Leerzeichen.

    Vielleicht wollen Sie auch zu verwenden $1 statt \1:

    /^([\s]*[\S]+).*$/$1/
    • Diese immer noch nicht zu sein scheinen zu arbeiten (regexr.com?34o6v). Vielleicht ist es gerade diese gkskinner.com das ist Durcheinander?
    • Kreuzen Sie die ‚multiline‘ checkbox.
    • Ihre regexr funktioniert, wenn Sie überprüfen die „multiline“ – box.
    • Sie müssen nicht \s und \S innerhalb von Klammern.
    • Entweder von Ihnen wissen, warum mein regex mit dem lookbehind nicht funktioniert?
  2. 3

    Versuchen dieser reguläre Ausdruck

    ^(\s*.*?\s).*

    Demo: gskinner

    • Dieses funktioniert, aber leider packt Sie das Leerzeichen nach dem Wort. Am Liebsten würde ich nur tauschen, alles bis zu und einschließlich dem Ende des Wortes.
    • in diesem Fall können Sie die letzten \s aus der Gruppe ex ^(\s*.*?)\s.* regexr.com?34o75
    • Ich hatte die Sternchen.
  3. 0

    entfernen Sie die beiden ersten Wörter
    @“^.Sternchen? .Sternchen? “
    dies funktioniert für mich

    veröffentlicht werden, wird der Stern nicht angezeigt. keine Ahnung.

    wenn Sie möchten, entfernen Sie das erste Wort, starten Sie einfach die regex wie folgt
    ein dot Zeichen
    ein Sternchen-Zeichen
    ein Fragezeichen
    ein Raum
    ersetzen mit:““

Kostenlose Online-Tests