J'essaie d'utiliser le package stringr dans R pour tout extraire d'une chaîne jusqu'à la première occurrence d'un trait de soulignement.
Ce que j'ai essayé
str_extract("L0_123_abc", ".+?(?<=_)")
> "L0_"
Fermer mais pas de cigare. Comment puis-je l'obtenir? De plus, idéalement, j'aimerais quelque chose de facile à étendre afin que je puisse obtenir les informations entre le 1er et le 2ème tiret bas et obtenir les informations après le troisième tiret bas.
Obtenir L0
, vous pouvez utiliser
> library(stringr)
> str_extract("L0_123_abc", "[^_]+")
[1] "L0"
Le [^_]+
correspond à 1 ou plusieurs caractères autres que _
.
Vous pouvez également fractionner la chaîne avec _
:
x <- str_split("L0_123_abc", fixed("_"))
> x
[[1]]
[1] "L0" "123" "abc"
De cette façon, vous aurez toutes les sous-chaînes dont vous avez besoin.
La même chose peut être obtenue avec
> str_extract_all("L0_123_abc", "[^_]+")
[[1]]
[1] "L0" "123" "abc"
Le regex lookaround doit être
str_extract("L0_123_abc", ".+?(?=_)")
#[1] "L0"
Utilisation de gsub ...
gsub("(.+?)(\\_.*)", "\\1", "L0_123_abc")