2017-01-26 4 views
-4

Ich habe zwei Strings:Extrakt mehr Teile eines Strings mit R

data = "Product Number: #76 in c (See Top 10 products in this department)" 
data1 = "Product Number: #321,222 in Thin Base Pizzas (See Top 10 products in this department)" 

mit str_match() in R, was würde die Regex für die folgenden Ergebnisse sein?

str_match (Daten, regex) [1] [2] [3]
[1] "76 # in Fruchtsaft" "76" "Fruchtsaft"

str_match (data1, regex) [1] [2] [3]
[1] "# 321222 in Thin Base-Pizzas" "321222" "Thin Base-Pizzas"

+0

mehr Kontext bitte, müssen Regelmäßigkeit in der Struktur Ihrer Strings finden, um nützliche Antwort zu liefern. – snoram

+0

bieten mehr Details –

+0

Die Zahl nach # kann mehrere Ziffern und Koma als Tausendertrennzeichen haben ex: # 31,123. der Text nach "in" und vor "(Siehe" kann in der Länge variieren, hat aber keine Sonderzeichen Beispiel: "Thin base pizzas" Text "Artikelnummer: #" und der Text "(Siehe Top 10 Produkte in dieser Abteilung) "ändert sich nie. – 555

Antwort

0

Sie können dies nutzen Regex, um die Informationen zu extrahieren, die Sie benötigen:

#([0-9,]+) in ([A-z ]+) 

können Sie hier in Aktion sehen: https://regex101.com/r/IM0wHV/1

+2

Achten Sie auf den Bereich' Az', es enthält nicht Buchstaben Zeichen '[' '' '' _ '_' _ ', Backslash und Backquote – Toto

0

Bei Ihrem ersten Kommentar ich denke, das werden Sie verallgemeinern die Produktnummer zu geben.

sub(" .*", "", sub(".*#", "", data)) 
"76" 

Und das zweite wird euch geben, was zwischen dem in und ( ist.

Keine ideale Lösung, aber es ist ein funktionierendes Beispiel, das Sie von hier aus übernehmen können.