[英]Regex in R: extract words from a string
我有一個要從中提取名稱的字符串,但似乎無法正確處理所有事情:
str = "JaMes + Heather + Lynn + log(Barry) + Sister2"
str_list = strsplit(x=str, split="\\+")
我不希望“ log(Barry)”作為輸出,而只是“ Barry”。
一個選項是使用gsub/sub
刪除log
和括號
gsub('log\\(|\\)', '', str)
#[1] "JaMes + Heather + Lynn + Barry + Sister2"
或sub
sub('log\\(([^)]+)\\)', '\\1', str)
#[1] "JaMes + Heather + Lynn + Barry + Sister2"
或者使用regexpr/regmatches
,我們只能提取單詞
setdiff(regmatches(str, gregexpr('\\w+', str))[[1]], "log")
#[1] "JaMes" "Heather" "Lynn" "Barry" "Sister2"
如果我們需要慣用語
library(stringr)
setdiff(str_extract_all(str, "\\w+")[[1]], "log")
#[1] "JaMes" "Heather" "Lynn" "Barry" "Sister2"
或使用正則表達式環顧
str_extract_all(str, "\\w+\\b(?!\\()")[[1]]
[1] "JaMes" "Heather" "Lynn" "Barry" "Sister2"
您可以使用
library(stringi)
stri_extract_all_words(gsub("log", "", str))[[1]]
[1] "JaMes" "Heather" "Lynn" "Barry" "Sister2"
您可以使用'function_name(object)'
類'function_name(object)'
任何東西,然后使用gsub
將其轉換為'object'
。 之后,在' + '
上分割將提供所需的輸出。
strsplit(gsub('\\w+\\((.*)\\)', '\\1', str), ' + ', fixed = T)[[1]]
# [1] "JaMes" "Heather" "Lynn" "Barry" "Sister2"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.