2016-06-27 7 views
-2

Beispiel Strings:Regex zu trimmen Leerzeichen am Ende des unbekannten Zeichenfolgen von Wörtern

This is "a" test   
This & test   
This test string-has more words  

In jedem der obigen Beispiele I Wortketten von unterschiedlicher Länge haben. Auf jede dieser Zeichenfolgen folgt eine Reihe von Leerzeichen und danach nichts mehr.

Meine Anwendung verwendet () um Abschnitte der Regex, um bei Bedarf nur den Teil des übereinstimmenden Musters zurückzugeben.

Ich brauche eine Regex, die die vollständige Zeichenfolge unabhängig von der Länge abzüglich der Leerzeichen am Ende zurückgibt.

Meine aktuelle ist (.*)\s{1,}$|(.*\S)$ Dies funktioniert, wenn 0 Leerzeichen am Ende der Zeichenfolge oder 1 Leerzeichen am Ende der Zeichenfolge, aber 2 Leerzeichen oder mehr und die Leerzeichen in der Ausgabe enthalten sind.

+0

Willkommen Überlauf Stack! Bitte zeigen Sie uns [was Sie versucht haben] (// whathaveyoutried.com), sowie das spezifische Problem oder den Fehler, dem Sie begegnen. Stellen Sie sicher, dass ein [minimales, vollständiges, überprüfbares Beispiel] (// stackoverflow.com/help/mcve) enthalten ist. –

+0

Ich bin nicht sicher, warum ich downvoted werde ... Ich habe meinen Code zunächst nicht zur Verfügung gestellt, weil ich von meinem Handy aus gepostet habe, aber ich habe meine aktuelle Regex hinzugefügt und werde immer noch downvoted. –

+1

Sie können versuchen: '/.*(?= | $) /'. Welche Sprache/welches Werkzeug benutzt du? –

Antwort

0

Ihre Erklärung ist zu klein. Ich weiß nicht, welche Sprache Sie verwenden möchten, aber ich empfehle Ihnen, trimFunktion zu verwenden, um alle Leerzeichen am Anfang und Ende einer Zeichenfolge zu entfernen. aber wenn man auf den Einsatz regex bestehen, hier ist ein regulärer Ausdruck für Ihre Absicht:

/^[^ ][\w\W ]*[^ ]/ 

entfernt es ein oder mehrere Leerzeichen von Anfang und Ende der Zeichenfolge.
unterstützt es alle normalen Zeichen außer Leerzeichen. Wenn Sie weitere Einschränkungen benötigen, können Sie die \ w \ W-Anweisung manipulieren. Wenn im obigen Ausdruck Bugs sind, sag es mir einfach.

+0

Ich ändere eine winzige Sache bitte kopieren Sie den Ausdruck um die beste Leistung zu haben. – HosSeinM

+0

Es ist nicht Teil einer Sprache/Code, es ist eine Funktion dieser Anwendung, die wir verwenden, und in der App können Sie Regex schreiben, so dass ich die Trimm-Funktion nicht verwenden kann. Ungeachtet dessen funktioniert Ihr Regex oben einwandfrei, um die nachgestellten Leerzeichen zu entfernen, aber nicht Leerzeichen am Anfang, aber da das keine Voraussetzung war, gebe ich Ihnen die Antwort.Ich danke dir sehr. –

+0

Danke Bryan. Wenn Sie keine Leerzeichen von Anfang entfernen möchten, entfernen Sie einfach [^] vom Anfang des Ausdrucks. Ich meine: **/^ [\ w \ W] * [^]/** – HosSeinM

1

Wenn Sie einen regulären Ausdruck benötigen, dies zu tun: ^\s*(\S(.*\S)?)\s*$

Streifen jede Menge Platz, bis ein Nicht-Leerzeichen, isst dann eine beliebige Anzahl von Zeichen bis zum letzten Nicht-Leerzeichen, bevor alle nachfolgenden Leerzeichen abschneidet . Behandelt auch eine einzelne Zeichenfolge. Passt nicht zu einer leeren Zeichenfolge.

0

Dieser Code scheint zu funktionieren: .*\S

Und dies entfernt die beiden vorderen und hinteren Räume: \S.*\S