1

我怎样才能在 R 中完成这项工作?

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

gregexpr("(", "US (California, San Luis Obispo County)", fixed = FALSE, : invalid regular expression '(', reason 'Missing ')'' 中的错误

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

gregexpr("(", "US (California, San Luis Obispo County)") 中的错误:无效的正则表达式 '(',原因 'Missing ')''

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

gregexpr("(", "US (California, San Luis Obispo County)", perl = T) 中的错误:无效的正则表达式 '('

此外,警告信息:

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

2 回答 2

1

要使用“(”之类的特殊字符进行拆分,您必须对其进行转义。要在 R 中转义正则表达式,您必须使用双“\”,如建议的那样,一个用于 R 字符串,另一个用于正则表达式休。那么你的模式应该是“\(”。有关更多信息,请参阅正则表达式文档

以下代码完成了这项工作

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)"

它有帮助吗?

于 2014-06-04T08:27:39.190 回答
0
gsub("\\\\(","",c("U.S. (California, San Luis Obispo County)"))

或者

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

答案: “美国加利福尼亚州,圣路易斯奥比斯波县)”

于 2015-11-12T08:50:59.783 回答