r - 出現する文字列を 1 つおきに置き換える方法

okwaves2024-01-25  8

R で出現する文字列を 1 つおきに置き換えるにはどうすればよいですか?すべての \q を q タグ <q> に置き換えたいと思います。 </q>しかし、タグを正しく取得するために他の出現箇所をすべて置き換えるのに苦労しています。

library(stringr)

x = r"{I said \qHockey\q}"
str_replace_all(x, "\\q", "<q>") # not correct should have closing tag for 2nd occurrence


y = r"{I said \qHockey\q and \qBaseball\q}"
str_replace_all(y, "\\q", "<q>") # not correct should have closing tag for 2nd and 4th occurrence


------------------------

\\q 間の値をグループとしてキャプチャできます。

library(stringr)

x = r"{I said \qHockey\q}"
y = r"{I said \qHockey\q and \qBaseball\q}"

str_replace_all(x, "\\q.*\\q", function(m) paste0('<q>', gsub('\\q', '', m), '</q>'))
#[1] "I said <q>Hockey</q>"

str_replace_all(y, "\\q.*?\\q", function(m) paste0('<q>', gsub('\\q', '', m), '</q>'))
#[1] "I said <q>Hockey</q> and <q>Baseball</q>"

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。