2016-10-18 6 views
1

私はstringrパッケージをRで使用して、最初のアンダースコアが出現するまで文字列からすべてを抽出しようとしています。私はパターンの最初の出現までのすべてを抽出する方法

str_extract("L0_123_abc", ".+?(?<=_)") 
> "L0_" 

閉じるが、無葉巻を試してみた何

。これをどうすれば入手できますか?また、理想的には、1番目と2番目のアンダースコアの間に情報を取得し、3番目のアンダースコアの後に情報を取得できるように、拡張が容易なものが必要です。 GSUBを使う

+1

で達成することができる( "L0_123_abc"、 " +?(?= _)")' – akrun

答えて

3

する必要があり、あなたは

> 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必要

> str_extract_all("L0_123_abc", "[^_]+") 
[[1]] 
[1] "L0" "123" "abc" 
1

...

gsub("(.+?)(\\_.*)", "\\1", "L0_123_abc") 
3

正規表現の前後参照はL0を取得するには

str_extract("L0_123_abc", ".+?(?=_)") 
#[1] "L0" 
関連する問題