bugfix> r > 投稿

これは非常に基本的な質問ですが、明確な答えが見つかりません... 2番目のアンダースコアの後にすべてを削除するにはどうすればよいですか。ありがとう!

Please_remove_this_part

必要な出力:

Please_remove

回答 2 件
  • 2番目のアンダースコアの前にすべてを抽出することで問題を組み立てます。

    x = "Please_remove_this_part"
    stringr::str_extract(x, "[^_]*_[^_]*")
    # [1] "Please_remove"
    
    

    説明: [^_] アンダースコア以外のものと一致するため、 [^_]*_[^_]* アンダースコアではないもの、1つのアンダースコア、そしてアンダースコアではないものすべてに一致します。

  • x <- "Please_remove_this_part"
    sub("([A-Za-z]+_[A-Za-z]+).*", "\\1", x)
    [1] "Please_remove"
    
    

    この sub ソリューションは、2番目のアンダースコアの前のすべてをキャプチャグループとして定義し、後方参照を介してそれを呼び出します。 \\1 置換引数で。

あなたの答え