Wenn Sie nicht Look-behinds verwenden, aber die Zeichenfolge ist immer im gleichen Format und cannout mehr als der einzelne Bindestrich enthalten, Sie
^[^-]*[^ -]
für die ersten und \w[^-]*$
für die zweiten verwenden könnten (oder [^ -][^-]*$
, wenn der erste nicht-Raum nach dem Bindestrich nicht unbedingt ist Wort-Zeichen
ein bisschen Erklärung:. ^[^-]*[^ -]
stimmt mit dem Anfang des Strings (Anker ^
), um ein beliebigen Menge von Zeichen folgen, das ist kein Bindestrich und schließlich ein Zeichen, das kein Bindestrich oder Leerzeichen ist (nur um e xclude das letzte Leerzeichen aus dem Spiel).
[^ -][^-]*$
nimmt den gleichen Ansatz, aber umgekehrt, zuerst ein Zeichen das ist, um eine beliebige Menge von Zeichen weder Raum noch Bindestrich, gefolgt einstimmt, daß kein Bindestrich sind und schließlich das Ende der Schnur (Anker $
). \w[^-]*$
ist im Grunde das gleiche, es verwendet eine strengere \w
anstelle der [^ -]
. Dies wird wieder verwendet, um das Leerzeichen nach dem Bindestrich aus dem Match auszuschließen.
Warum teilen Sie die Zeichenfolge mit Bindestrich als Trennzeichen? Keine Notwendigkeit für Regex. –
Was möchten Sie erreichen? –