删除r中str_split中的左侧括号

时间:2014-06-04 05:50:21

标签: regex r strsplit stringr

如何在R中完成这项工作?

str_split("U.S. (California, San Luis Obispo County)",pattern=' (')

gregexpr错误("(","美国(加利福尼亚州,圣路易斯奥比斯波县)",固定= FALSE,:   正则表达式无效'(',原因'缺少')''

gregexpr("(", "U.S. (California, San Luis Obispo County)")

gregexpr错误("(","美国(加利福尼亚州,圣路易斯奥比斯波县)"):   正则表达式无效'(',原因'缺少')''

gregexpr("(", "U.S. (California, San Luis Obispo County)",perl=T)

gregexpr错误("(","美国(加利福尼亚州,圣路易斯奥比斯波县)",perl = T):   正则表达式无效'('

另外,警告信息:

In gregexpr("(", "U.S. (California, San Luis Obispo County)", perl = T) :
  PCRE pattern compilation error
    'missing )'
    at ''

2 个答案:

答案 0 :(得分:1)

要使用像#34;这样的特殊字符进行拆分("你必须逃避它。要逃避R中的正则表达式,你必须使用双" \",一个用于正如Hugh所建议的那样,R字符串和正则表达式的另一个字符串。然后你的模式应该是" \("。有关更多信息,请参阅regex doc

以下代码完成工作

raw_string <- "U.S. (California, San Luis Obispo County)"
splitted_string <- strsplit(x=raw_string, split="\\(")

splitted_string

#[[1]]
#[1] "U.S. "                              
#[2] "California, San Luis Obispo County)"

但我不确定你想要什么。如果您的目标是删除字符串中的左侧括号,请使用带有空替换模式的gsub

raw_string <- "U.S. (California, San Luis Obispo County)"
no_parenthesis_string <- gsub(pattern="\\(", replacement="", x= raw_string)
no_parenthesis_string 
# [1] "U.S. California, San Luis Obispo County)"

有帮助吗?

答案 1 :(得分:0)

gsub("\\\\(","",c("U.S. (California, San Luis Obispo County)"))

paste0(strsplit(c("U.S. (California, San Luis Obispo County)"), "\\(")[[1]], collapse = "")

答案: “美国加州,圣路易斯奥比斯波县”“