2017-03-09 2 views
-1
ersetzen

Ich versuche, Rückverweise zu verstehen, und ich denke, ein einfaches Beispiel würde mir helfen.Regex mit einem Muster, aber nur einen Teil des Spiels in R

sagen, dass ich die Zeichenfolge haben „$ 1 pro Kajak + 40k + 10 $ pro Drachen verkauft“ und wollen es „$ 1 pro Kajak + 40000 + $ 10 pro Drachen verkauft“

Wie kann ich dies in REGEX tun, um in R? Ich will nicht nur "k" durch "000" ersetzen. Ich kann auch nicht einfach sub() verwenden, da die Übereinstimmung möglicherweise nicht das erste Vorkommen in der Zeichenfolge ist.

+0

Ok geben, so was sind die Regeln? 'k', wenn eine Ziffer vorangestellt und mit einer Wortgrenze gefolgt wird, sollte ersetzt werden? –

+0

Ja, im Grunde Spurnummern in den Tausenden mit "k" dargestellt. –

+0

Das '\ 1' multipliziert nichts, es fügt nur die mit dem ersten' (...) 'erfasste Teilzeichenfolge in das Ergebnis zurück. –

Antwort

1

Edit: ignore.case basierend auf @ WiktorStribiżew ‚s Kommentar

string = "$1 per kayak + 40k + $10 per kite sold" 
gsub("(\\b\\d+)k\\b", "\\1000", string, ignore.case=TRUE) 
[1] "$1 per kayak + 40000 + $10 per kite sold" 
+0

Wenn nur Stackexchange eine Antwort für JEDE Regex Frage hatte. Ich denke, das wäre regexchange ... –

+0

Warum nicht ein einfacher 'gsub (" (\\ d) k \\ b "," \\ 1000 ", String)'? Außerdem wäre 'ignore.case = TRUE' hilfreich. –

+0

Für diese Zeichenfolge würden sie das gleiche funktionieren, ich habe gegen eine Zeichenfolge wie "Seine Lizenznummer ist G8K-4D2" geschützt. Aber Sie haben Recht, dass "ignore.case = TRUE" hilfreich wäre. Ich werde es der Lösung hinzufügen. – G5W

Verwandte Themen