2016-11-02 10 views
1

Ich habe eine große HTML, die ich es in swift analysieren muss und extrahieren einige IDs.Regex zum Extrahieren einer Zeichenfolge zwischen einer Zeichenfolge und dem dritten Vorkommen einer anderen Zeichenfolge in swift?

Wie kann ich extrahieren von: data-max-position="NAME-661174248527044608-661303076113014786-BD1UO2FFu9QAAAAAAAAET die folgende Zeichenfolge NAME-661174248527044608-661303076113014786 (Nummer zwischen ar nicht feste Größe)? Ich brauche Daten bwtween Daten-max-Position bekommen =“und das dritte Auftreten von‚-‘

Was regex sollte ich mir die Informationen zu geben, verwende ich

bisher für eine andere Art müssen von? Zeichenfolge ich habe die folgenden verwendet, aber ich weiß nicht, was regex sollte ich für das bekommen, was im ersten Teil

let query = mystr 
    let regex = try! NSRegularExpression(pattern:"data-name-id=\"(.*?)\"", options: []) 
    let tmp = query as NSString 
    var results = [String]() 

    regex.enumerateMatches(in: query, options: [], range: NSMakeRange(0, query.characters.count)) { result, flags, stop in 
     if let range = result?.rangeAt(1) { 
      results.append(tmp.substring(with: range)) 
     } 
    } 

    print(results) // ["test", "test1"] 
mentionated ist

, die mich extrahiert das Zeug in „data-name-id“ und die zweite "

+0

Ihre Regex [stimmt nicht mit den bereitgestellten Zeichenfolgen überein] (https://regex101.com/r/3wc0DF/1). Bitte klären Sie. –

+0

'data-max-position' und' data-name-id' sind nicht dasselbe. – rmaddy

+0

@ WiktorStribiżew Vielen Dank für Ihre Antwort. Was ich von "Bis jetzt habe ich verwendet" verwendet habe, stammt aus einer anderen Verwendung und ich wollte wissen, welche Regex ich für das verwenden soll, was ich im ersten Teil meiner Untersuchung erwähnt habe. –

Antwort

1

Wenn Sie einen Nur-Text-String im Format haben Sie erwähnt, können Sie einen regulären Ausdruck verwenden, um den Teil davon zu extrahieren:

pattern:"\\sdata-max-position=\"([^\"-]+-[^\"-]+-[^\"-]+)" 

Einzelheiten:

  • \\s - ein Leerzeichen
  • data-max-position=\" - Literal data-max-position=" Teilzeichenfolge
  • ([^\"-]+-[^\"-]+-[^\"-]+) - Gruppe 1 (Ihr erforderlicher Wert) passenden
    • [^\"-]+ - ein oder mehr andere Zeichen als " und -
    • - - ein Bindestrich
    • [^\"-]+-[^\"-]+ - siehe oben.

Beachten Sie, dass [^...] a * Zeichenklasse negiert ist, dass alle Zeichen übereinstimmt, die nicht in den Bereichen/Sätze innerhalb der Zeichenklasse definiert sind.

+0

Große Antwort! Vielen Dank –

Verwandte Themen