Rに次の文字があります。[SQ]の後に続くテキストのみを入力する方法はありますか。
入力
df # df is a character
[1] "[Mi][OD][SQ]Nice message1."
[2] "[Mi][OD][SQ]Nice message2."
[3] "[RO] ERROR: Could not SQLExecDirect 'SELECT * FROM "
期待される出力
df
[1] Nice message1. Nice message2
以下のような[SQ]がもっとある場合
df # df is a character
[1] "[Mi][OD][SQ]Nice message1."
[2] "[Mi][OD][SQ]Nice message2."
[3] "[RO] ERROR: Could not SQLExecDirect 'SELECT * FROM "
[4] "[Mi][OD][SQ]Nice message3."
期待される出力
df
[1] Nice message1. Nice message2. Nice message3
オプションは、使用str_extract
して部分文字列を抽出し、でラップしna.omit
てNA
、文字列に一致するものがない場合に発生する要素を削除することです。ここでは、正規表現ルックアラウンドを使用して、[SQ]
他の文字に先行するパターンをチェックし、後続の文字を抽出します。
library(stringr)
as.vector(na.omit( str_extract(df, "(?<=\\[SQ\\]).*")))
#[1] "Nice message1" "Nice message2" "Nice message3"
単一の文字列である必要がある場合str_c
は、文字列を折りたたむ
str_c(na.omit( str_extract(df, "(?<=\\[SQ\\]).*")), collapse = '. ')
#[1] "Nice message1. Nice message2. Nice message3"
df <- c("[Mi][OD][SQ]Nice message1.", "[Mi][OD][SQ]Nice message2.",
"[RO] ERROR: Could not SQLExecDirect 'SELECT * FROM ", "[Mi][OD][SQ]Nice message3."
)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加