Wie kann ich entfernen Sie alle Zeichen aus string, beginnend bei der ersten nicht-alpha-Zeichen?
Gewesen wäre viel einfacher, wenn nicht für bestimmte Situationen.
Beispieldaten:
KENP989SD
KENP913E
KENPX189R
KENP913
Welchen regulären Ausdruck kann ich verwenden, um entfernen Sie alle Zeichen aus dem string, beginnend bei der ersten nicht-alpha-Zeichen? Im Grunde möchte ich die ersten nicht-alpha-Zeichen und hacken alles ab, nachdem, dass, unabhängig vom char-Typ.
Nach regex angewendet wird, diese Daten sollten sein:
KENP
KENP
KENPX
KENP
Also im Grunde, Sie wollen es unter die erste nicht-alpha. Für 'KENPX189R", nachdem die "letzten " alpha" wäre ", weil die "letzten " alpha" (auf der Linie ist 'R'.
ja Ihr Recht... krank verfeinern Sie die Titel - /desc
ja Ihr Recht... krank verfeinern Sie die Titel - /desc
InformationsquelleAutor CheeseConQueso | 2009-02-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
$s =~ s/[^a-zA-Z].*$//;
Buchstäblich, finden die ersten nicht-alpha-char und hacken alles ab.
In seinem Beispiel er entledigt sich aller chars nach dem ersten nicht-alpha, und nicht alle nicht-alpha am Ende.
Sorry, du hast Recht, habe ich falsch verstanden, die Frage.
Was sein könnte, eine notwendige Einschränkung: Was wird als alpha-Zeichen? Abhängig von Ihrem input, das könnte mehr als /[a-zA-Z]/ ...
Trailing $ nutzlos da .* ist gierig.
InformationsquelleAutor Igor Oks
Sie formuliert die Anfrage 2 Möglichkeiten:
Während das Ergebnis das gleiche, da Ihre sample-Streicher, die ich gefunden habe, lohnt es sich, sein vorsichtiger mit regexes. Also, würde ich den ersten Punkt von oben als wirkliche Voraussetzung, und schreiben Sie es als:
Den Vorteil, in meinem Kopf ist, dass unerwartete strings (wie "7KENP989SD") sollte im Ergebnis ein null-string nach der Ersetzung, statt etwas unerwartetes wie "7KENP". Natürlich, vielleicht ist das was Sie wollte...
InformationsquelleAutor jimtut
... arbeiten. Es ist nicht unbedingt der beste Weg, es zu tun, aber es ist ein allgemeiner Fall ersetzen.
Es funktioniert nur, wenn Sie wollen einfach nur alpha-Zeichen
InformationsquelleAutor user54650
s/\P{Alpha}.*//
funktioniert bei mir einwandfrei:InformationsquelleAutor Hynek -Pichi- Vychodil
Vielleicht dies:
Verwendet-look-behind, alles zu ersetzen, nach dem Start-alphas mit leer.
Hinzufügen eines i-flag für groß- /Kleinschreibung, falls erforderlich:
InformationsquelleAutor Peter Boughton
HINWEIS: ich denke, Igor ist effizienter.
Fügen Sie die 'i' - flag für groß- /Kleinschreibung übereinstimmt
InformationsquelleAutor Joe Casadonte
Hier ist mein gehen Sie.
/^([A-Za-z]).$/
BEARBEITEN ich mag Igors Ansatz besser als meine ..
code:
InformationsquelleAutor lexu
Wenn Sie nicht brauchen, ändern Sie die Eingabe-Zeile selbst, ich diese ein wenig mehr:
Meisten meiner lexikale Variablen sind in den allermeisten Fällen, so dass ein paar mehr nicht Schaden und hält mich von möglicherweise falsch zu interpretieren-Eingang. Plus, es geht taint.
InformationsquelleAutor Axeman