2016-05-12 14 views
3

Könnte mir jemand mit einer RegEx helfen? Ich möchte alle unnötigen Informationen im artiple Titel des Getränks wie Größe, Menge und so weiter löschen.RegEx passt zu früh

Ich habe dieses RegEx: /(?<!^)(\d{1,2}\s?x\s?)?\d{1,2}((,|\.)\d{1,2})?\s?L?/igU

Auf 25 Test Drink 60% 12x1,0L ist es die 5 die 25 entsprechen.

Auf Test Drink 60% 12x1,0L passt es die 60 vor der %.

Wie kann ich diese Beispiele vermeiden? Ich möchte nur die 12x1,0L übereinstimmen. Ich musste so viele optionale Zeichen eingeben, weil die Datenquelle für das Format der Menge und Größe sehr inkonsistent ist. Es kann auch passieren, dass die Menge fehlt, weil es nur eine einzige Flasche/Dose ist.

Ich habe mehr Beispiel Titel zur Verfügung gestellt unten und hier: https://regex101.com/r/aQ2kO8/2

25 Test-Trinken 60% 12x1,0L
-Test 60% Trinken 2x0,5
Test-Drink 3 x 0,75 L
Test-Drink 4x0,75 L
Test-Drink 5 x 0,75L
Test-Drink 66 x 0,75
Getränk-Test 0,75
Test-Getränk 0,75
7UP 12 x 1 L

Könnte mir bitte jemand mit diesem Problem helfen?

+0

Könnten Sie '(?: \ D + \ s * x \ s *)? (?: \ D + [.,])? \ D + \ s * L? \ S * $ $ probieren? Ich bin mir nicht sicher, ob ich alle Ihre Anforderungen richtig verstanden habe. –

+0

Ist es so, dass das Muster, das Sie suchen, immer mit "L" enden sollte? – nu11p01n73R

+0

@SebastianProske Danke für die Vorschläge, aber es ist nur passend für das letzte Beispiel in meinem Link. Ich habe das '?' Hinzugefügt, weil diese Zeichen nur optional sind und möglicherweise nicht im Titel vorkommen.Bitte überprüfen Sie den Link, wo ich weitere Beispiele für die Titel –

Antwort

1

Sie können (?:\d+\s*x\s*)?(?:\d+[.,])?\d+\s*L?\s*$ als Suchmuster verwenden, müssen Sie den M-und G-Modifikator, wenn Sie es auf einen mehrzeiligen Text anwenden. Auch i-Modifikator ist erforderlich, wenn Sie nicht für die char-Fall von l und x

  • (?:\d+\s*x\s*)? optional entspricht Ziffern von einem x gefolgt kümmern, die von Räumen umgeben sein könnte
  • (?:\d+[.,])? optional entspricht Ziffern gefolgt durch einen Punkt oder ein Komma
  • \d+ entspricht eine oder mehr Zahlen
  • \s*L?\s* optional ein L Spiele, die durch Zwischenräume umgeben sein könnten
  • $ entspricht dem Ende der Zeile. Von Ihrer Beschreibung die Dinge, die Sie übereinstimmen möchten, sind immer am Ende, mit diesem können wir vermeiden, dass die Zahlen im Namen der Getränke

Werfen Sie einen Blick auf eine regex101 demo.