簡體   English   中英

R中的正則表達式:從字符串中提取單詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM