Bagaimana cara mengekstrak teks antara @ pertama dan spasi? Saya telah menyebutkan kode saya di bawah ini. Itu mengekstrak semua kata setelah semua @, tetapi saya hanya ingin teks terlebih dahulu @.

Teks

@pisa, what's up?
@italy @spain we're praying for you.

Hasil yang ideal

pisa
italy

Kode saya

regex <- "@([A-Za-z]+[A-Za-z0-9])"

words <- str_extract_all(text, regex)

print(words)

Keluaran

@pisa
@italy @spain 
1
Shreya Agarwal 11 April 2020, 18:41

1 menjawab

Jawaban Terbaik

Kita dapat menggunakan pencarian regex sebagai regex yaitu untuk mencocokkan kata yang diikuti dengan simbol @

library(stringr)
str_extract(text, "(?<=@)\\w+")
#[1] "pisa"  "italy"

Bisa juga

str_extract(text, "(?<=@)[^, ]+")
#[1] "pisa"  "italy"

Atau di base R, menggunakan sub, tangkap kata setelah @ dan sebagai penggantinya tentukan referensi balik (\\1) dari grup yang diambil

sub("^@(\\w+).*", "\\1", text)
#[1] "pisa"  "italy"

Juga, opsi lain adalah regmatches/regexpr

regmatches(text, regexpr('(?<=@)\\w+', text, perl = TRUE))
#[1] "pisa"  "italy"

Atau dengan trimws

trimws(text, whitespace = '@|,? .*')
#[1] "pisa"  "italy"

Data

text <- c("@pisa, what's up?", "@italy @spain we're praying for you.")
1
akrun 11 April 2020, 15:58