次の文字列で、角かっこで囲まれた単語を保持し、他の単語を削除する必要がありました。
(a(b(c)d)(e)f)
したがって、私が期待したのは (((c))(e)) です。a、b、d、f を削除するために、「not follow by」正規表現を試しました。
str <- "(a(b(c)d)(e)f)"
gsub("([a-z]+)(?!\\))", "", str) #(sub. anything that isn't followed by a ")" )
メッセージは私の正規表現が無効であることを示しています。ご覧のとおり、正規表現 "(?!\))" の 2 番目の部分の括弧が正しく一致していません。私のエディターに関しては、最初の "(" は直後の ")" と一致しますが、これは閉じ括弧を意味するものではありません (その右にあるものはそうです)。正規表現からこのエラーだけを確認できました。実際に何が間違っているのか教えてください。これを行う他の方法はありますか?