Ich habe eine Zeichenfolge, in der ich versuche, das erste übereinstimmende Muster mit einem entsprechenden Ersatz zu ersetzen. ZB in meinem Beispiel unten: Wenn bb
zuerst gefunden wird, ersetzen Sie es durch foo
und ersetzen Sie nichts anderes, aber wenn cc
zuerst gefunden wird, ersetzen Sie es durch bar
und ersetzen Sie nichts anderes.stringis stri_replace_first_regex Ersatz nicht als Regex
Dies verhält sich fast wie gewünscht, außer das replacement
Argument wird nicht als Regex interpretiert, sondern als eine ganze Zeichenfolge. (Aber das pattern
Argument wird als Regex, wie erforderlich, gesehen).
stri_replace_first_regex(
c(" bb cc bb cc "," cc bb cc bb ", " aa bb cc "),
pattern = " bb | cc ",
replacement = " foo | bar ")
ouputs: " foo | bar cc bb cc " " foo | bar bb cc bb " " aa foo | bar cc "
während ich möchte es Ausgabe " foo cc bb cc " " bar bb cc bb" " aa foo cc "
Irgendeine Idee, wie man das lösen?
Danke.
Weitere Kontext:
Meine Eingänge können im Grunde fast alle Formatierungen, sie sind Post-Adressen von Kunden eingegeben, in denen ich brauche die Art der Straße standardisiert durch etwas zu ersetzen (zum Beispiel drehen street
in st
, road
in rd
und avenue
in av
). Irgendwelche dieser Wörter können wieder erscheinen (zB 20 bis road of sesame street
), daher betrachte ich nur die erste Erscheinung als gültig, und das nachfolgende Erscheinen eines Wortes aus der pattern
Liste darf nicht ersetzt werden.
kann ein Ersatzmuster keinen RegexMuster enthält:
pattern
undreplacement
vektorisiert, also, wenn Sie ihnen einen Vektor von Strings übergeben, wird jedes Muster mit dem jeweiligen Ersatz ersetzt werden. Ist es ein wörtliches 'bb' und' cc' oder nur Musterplatzhalter? Ich denke, sie sind nur Platzhalter hier. –Ich bin mir nicht sicher, ob ich Ihre Frage verstehe: Ich habe Postanschriften, und ich möchte das Wort, das den Straßentyp angibt, durch etwas Normiertes ersetzen: "1 Straße von welcher Straße" bis "1 von welcher Straße", "1 Straße von welcher Straße "zu" 1. von welcher Straße "und" 1 Straße von welcher Straße "zu" 1. von welcher Straße auch immer ". Also wären meine zwei Regexes 'pattern =" street | road "' und 'replacement =" st | rd "'. Ich hoffe, das beantwortet deine Frage. –
'v <- Vektorisieren (sub); v (c ('bb', 'cc'), c ('foo', 'bar'), c ("bb cc bb cc", "cc bb cc bb")) ' – rawr