2017-02-04 1 views
3

Die Daten sehen wie folgt aus besteht:Regex entfernen Wagenrücklauf von Ende Linien, wenn es

0.43,0.57,0.71,0.29,0.71,1.00,0.57,1.00\r 
0.43,0.57,0.71,0.29,0.71,1.00,0.57,1.00 
0.43,0.57,0.71,0.29,0.71,1.00,0.57,1.00\r 

und ich mag die Carriage Return-Zeichen (mit \r in der Probe oben markiert) extrahieren. Ich habe versucht, dies mit gm und eine Capture-Gruppe:

(.*)(?:\\r)$ 

aber diese Spiele nur die Linien mit einem \r. Ich dachte, die Lösung eine ? vor dem $ hinzuzufügen wäre, aber das funktioniert nicht.

Demo: https://regex101.com/r/jArLdS/1

Prost

+1

Möchten Sie alle * Linien erfassen * ohne '\ r' - Carriage Return - am Ende? Verwende '[^ \ r \ n] +'. Ihre obige Beispielzeichenfolge enthält einen umgekehrten Schrägstrich + den Buchstaben "r". Else, verwenden Sie [ '/(.+?)(?:\\r)?$/gm'](https://regex101.com/r/8nQEqg/1). –

+0

Sind diese gemeint, um * literal * '' 'oder ein Carriage-Return-Zeichen zu sein? Willst du einfach alles mit dem '\ r' abgleichen, oder musst du wirklich alles * außer *' 'und' '' separat aufzeichnen? – Bohemian

+0

@Bohemian Sorry für Unklarheiten. Als ich diese Frage schrieb, interpretierte ich das \ r als eine Zeichenfolge mit zwei Zeichen, aber es stellte sich heraus, dass es das Wagenrücklaufzeichen war - was die Lösung trivial macht, wie oben ausgeführt. Wirklich interessierte mich mehr für den anderen Fall, den er auch gelöst hat – AlexG

Antwort

2

Wenn Sie alle Linien außer \r übereinstimmen soll - eine Wagenrücklauf - verwenden

[^\r\n]+ 

, die ein negierte Zeichenklasse ist ([^...]), die einen oder mehrere (durch + quantifier) ​​Spiele andere Zeichen als \r und \n.

0

Live Demo

Versuchen Sie, diese Regex:

^([^\\r\n]*)(:?\\r)?$ 

Dies wird vorausgesetzt, Sie die \r bedeuten ohne und nicht extrahieren \r weil Ihre ursprüngliche regex tut, .

0

tragbare Lösung.

(^.*?)(\\r)(\r\n|\n)

Das sind 3-Capture-Gruppen, von links nach rechts, bei 1 beginnen, nicht 0.

Ersetzen Sie Ihre Zeichenfolge mit Einfanggruppen 1 und 3, 2.

Capture-Gruppen-Skipping in der Regel syntaktisch wie \1 oder $1 für die meisten Sprachen, die sie verwenden.

Verwandte Themen