regex-insert-char

textmining
regex
string
Published

May 22, 2023

Aufgabe

Gegeben sei ein String dieser Art (ggf. noch viel länger, aber vom gleichen Aufbau):

my_string <-c(
"word1",
"word2",
"word3"
)

writeLines(my_string)
word1
word2
word3

(writeLines druckt einen String, wo wie er am Bildschirm erscheint, wenn man einfach nur my_string eingibt, werden Steuerzeichen mitangezeigt.)

Wandeln Sie diesen String (programmatisch) um in folgende Form

my_string_out <-c(
'"word1"',
'"word2"',
'"word3"'
)

writeLines(my_string_out)
"word1"
"word2"
"word3"











Lösung

library(stringr)
str_replace_all(string = my_string,
                pattern = "(^\\w)(.+$)",
                replacement = '\\"\\1\\2\\"') %>% 
  writeLines()
"word1"
"word2"
"word3"

Erklärung:

  • (^\\w) ist eine Such-Gruppe, die aus den Treffern besteht, bei denen zu Beginn des Strings ein “Wort-Zeichen” steht vgl. hier.
  • (.+$) ist eine Such-Gruppe, die aus Treffern besteht, bei denen zum Ende des Strings ein beliebiges Zeichen steht.
  • '\\"\\1\\2\\"' \\" bezieht sich auf ein Anführungszeichen, \\1 bezieht sich auf die 1. Such-Gruppe (analog für \\2).

Hat man innerhalb eines Strings ein Anführungszeichen, so setzt man außen das einfache und innerhalb des Strings das doppelte Anführungszeichen.


Categories:

  • textmining
  • regex
  • string