キャプチャグループを使用してそれを参照することができます。 WiktorStribiżewが指摘したように、特定のシナリオを処理する方法とケースの詳細を決定する必要があります。提示された例のケースでは
、スペースに続く非whitepspace文字1回以上(\\S+
)に続くスペースが続くKEYを探して:あなたは、より一般的になりたい場合は
gsub("(KEY \\S+)", "\\1\n", string, perl = TRUE)
"KEY"の後にできるものは、あなたが許可するものを含む文字クラスを追加することができます(英数字/アンダースコア以外の文字の場合は\ s、Wiktorの場合は\ W)。このような何か:
gsub("(KEY[., ;!?]\\S+)", "\\1\n", string, perl = TRUE)
gsub("(KEY\\s\\S+)", "\\1\n", string, perl = TRUE)
gsub("(KEY\\W+\\S+)", "\\1\n", string, perl = TRUE)
は、文字クラスの一部にあなたが好きな句読点[., ;!?]
を置くWiktor第の変化(s)は少しより堅牢なことがあります
gsub("(KEY\\s+\\S+\\s*)", "\\1\n", string) # \s = white-space character
# \S = non-white-space character
gsub("(KEY\\W+\\w+\\s*)", "\\1\n", string) # \w for alphanumeric/underscore
# \W for the opposite of \w.
これらの変異体次の単語(0以上の空白文字の場合は\\s*
)のあとにスペースを必要とせず、KEYの後に1つ以上の空白文字と一致するか、 KEYの後に1つ以上の非英数字/アンダースコア。
キャプチャグループを使用してそれを参照してください。 'gsub("(KEY。+?) "、" \\ 1 \ n "、文字列)'。またはより一般的な 'gsub("(KEY [、、!?]。+?) "、" \\ 1 \ n "、文字列)'。あなたがキャラクタークラスの部分 '[。、;!?]' – Jota
カールにどんな句読点を入れても、あなたはあまり単純化していません。 '何かKEY、次の言葉? 「次の」単語の後に空白がない場合はどうなりますか?そして、あなたのための*単語*は何ですか? 1 +英数字/アンダースコア( '\ w +')?ハイフンとアポストロフィ「[a-zA-Z ' - ] + '? –
@Jotaこれは完璧に機能しました。 – Carl