Jadi saya punya kolom nama kontrak nama df $ seperti di bawah ini

FB210618C00280000
. ADM210618C00280000. M210618p00280000.

Saya ingin mengekstrak FB, ADM dan M. yang saya ingin mengekstrak karakter dalam string dan memiliki panjang yang berbeda dan berhenti setelah nomor pertama terjadi, dan saya tidak ingin mengekstrak C atau P.

Kode di bawah ini akan memberi saya C atau P

stri_extract_all_regex(df$name, "[a-z]+") 
0
ML33M 29 Mei 2021, 00:12

2 jawaban

Jawaban Terbaik

Kita dapat menggunakan stri_extract_first dari stringi

library(stringi)
stri_extract_first(df$name, regex = "[A-Z]+")
#[1] "FB"  "ADM" "M" 

Atau kita dapat menggunakan base R dengan sub

sub("\\d+.*", "", df$name)
#[1] "FB"  "ADM" "M" 

Atau gunakan trimws dari base R

trimws(df$name, whitespace = "\\d+.*")

Data

df <- data.frame(name = c("FB210618C00280000", "ADM210618C00280000", 
    "M210618P00280000"))
3
akrun 28 Mei 2021, 21:14

Kamu bisa memakai

library(stringr)
str_extract(df$name, "^[A-Za-z]+")
# Or
str_extract(df$name, "^\\p{L}+")

Fungsi stringr::str_extract akan mengekstraksi terjadinya pola dan ^[A-Za-z]+ / ^\p{L}+ Regex cocok dengan satu atau lebih huruf di awal string. Catatan \p{L} cocok dengan huruf unicode apa pun.

Lihat Regex Demo.

Pola yang sama dapat digunakan dengan stringi::stri_extract_first():

library(stringi)
stri_extract_first(df$name, regex="^[A-Za-z]+")
0
Wiktor Stribiżew 28 Mei 2021, 21:23