Rで stringr パッケージを使用して、文字列からアンダースコアが最初に現れるまでのすべてを抽出しようとしています。
私が試したこと
str_extract("L0_123_abc", ".+?(?<=_)")
> "L0_"
閉じるが葉巻はない。どうすれば入手できますか?また、1番目と2番目のアンダースコアの間の情報を取得し、3番目のアンダースコアの後に情報を取得できるように、拡張が簡単なものが理想的です。
L0
を取得するには、
> library(stringr)
> str_extract("L0_123_abc", "[^_]+")
[1] "L0"
[^_]+
は、_
以外の1つ以上の文字と一致します。
また、_
で文字列を分割することもできます:
x <- str_split("L0_123_abc", fixed("_"))
> x
[[1]]
[1] "L0" "123" "abc"
このようにして、必要なすべてのサブストリングを取得できます。
同じことで達成できます
> str_extract_all("L0_123_abc", "[^_]+")
[[1]]
[1] "L0" "123" "abc"
正規表現の見回しは
str_extract("L0_123_abc", ".+?(?=_)")
#[1] "L0"
Gsubを使用しています...
gsub("(.+?)(\\_.*)", "\\1", "L0_123_abc")