2016-06-04 10 views
1

Ich versuche, doppelte Zeilen mit Regex in Xcode mit Swift zu entfernen. Als Anfänger habe ich Schwierigkeiten damit umzugehen.Entfernen von doppelten Zeilen in RegEx mit Swift 2

Derzeit REGEX für die Verwendung, ich versuche, diesen Code zu verwenden (bitte beachten Sie, dass, wo ich zwei Schrägstriche verwenden, von denen es nur als Escape-Zeichen für Swift-Strings verwendet wird) von http://www.regular-expressions.info/duplicatelines.html angepasst:

let originalText = "Have a nice day \n\n Have a nice day" 
let myPattern = "^(.*)(\\r?\\n\\1)+$" 
let replacement = "\\1" 

Aber es scheint, dass es in meiner Implementierung nicht funktioniert.

Antwort

1

Beschreibung

ich Ihren Ausdruck dieses ändern würde:

(^[^\n]*$)(?:\n\1)+ 

Ersetzen durch:\1

Dieser reguläre Ausdruck folgendes tun

Regular expression visualization

:

  • Finden Sie doppelte Linien

Hinweis: Sie werden die \ mit \\ und verwenden Sie die folgenden Flags ersetzen müssen: mehrzeilige so dass ^ und $ Spiel bei jeder Zeile, und die globale Option so der Ausdruck weiter nach dem ersten Spiel.

Beispiel

Live Demo

https://regex101.com/r/uJ9rS8/4

Beispieltext

Have a nice day 
Have a nice day 
fdaf 
These are not the droids you are looking for 
These are not the droids you are looking for 
These are not the droids you are looking for 

Probe Spiele

Have a nice day 
fdaf 
These are not the droids you are looking for 

Erklärung

NODE      EXPLANATION 
---------------------------------------------------------------------- 
    (      group and capture to \1: 
---------------------------------------------------------------------- 
    ^      the beginning of a "line" 
---------------------------------------------------------------------- 
    [^\n]*     any character except: '\n' (newline) (0 
          or more times (matching the most amount 
          possible)) 
---------------------------------------------------------------------- 
    $      before an optional \n, and the end of a 
          "line" 
---------------------------------------------------------------------- 
)      end of \1 
---------------------------------------------------------------------- 
    (?:      group, but do not capture (1 or more times 
          (matching the most amount possible)): 
---------------------------------------------------------------------- 
    \n      '\n' (newline) 
---------------------------------------------------------------------- 
    \1      what was matched by capture \1 
---------------------------------------------------------------------- 
)+      end of grouping 
---------------------------------------------------------------------- 
Verwandte Themen