删除除R中特定位置的单词以外的字符串
我有以下字符串删除除R中特定位置的单词以外的字符串,r,string,gsub,R,String,Gsub,我有以下字符串 string <- c("Trade (% of GDP) – Latin America & Caribbean (WB/WDI/NE.TRD.GNFS.ZS-ZJ)", "Trade (% of GDP) – North America (WB/WDI/NE.TRD.GNFS.ZS-XU)" ) string您可以使用正则表达式执行此操作。基于这两个示例,我确定的两种模式是1)删除-之前的所有内容,以及2)删除parens()中的所有内容 这里有一个解决方案
string <- c("Trade (% of GDP) – Latin America & Caribbean (WB/WDI/NE.TRD.GNFS.ZS-ZJ)", "Trade (% of GDP) – North America (WB/WDI/NE.TRD.GNFS.ZS-XU)" )
string您可以使用正则表达式执行此操作。基于这两个示例,我确定的两种模式是1)删除-
之前的所有内容,以及2)删除parens()
中的所有内容
这里有一个解决方案:
string[1]“拉丁美洲和加勒比”“北美”
由(v0.2.1)于2019-03-10创建
正则表达式^.*\\s–\\s
的第一部分说“在找到-
之前,从字符串开头抓取所有字符”
在正则表达式中,
表示或,因此第二个正则表达式\\s*\\([^\\)]+\
标识括号内的所有文本(以及前导/尾随空格)。这要归功于正则表达式。您可以使用正则表达式来实现这一点。基于这两个示例,我确定的两种模式是1)删除-
之前的所有内容,以及2)删除parens()
中的所有内容
这里有一个解决方案:
string[1]“拉丁美洲和加勒比”“北美”
由(v0.2.1)于2019-03-10创建
正则表达式^.*\\s–\\s
的第一部分说“在找到-
之前,从字符串开头抓取所有字符”
在正则表达式中,
表示或,因此第二个正则表达式\\s*\\([^\\)]+\
标识括号内的所有文本(以及前导/尾随空格)。这个正则表达式的功劳。另一个想法
trimws(sub(".*–([^\\(]+).*", "\\1", string))
# [1] "Latin America & Caribbean" "North America"
删除小于或等于–的所有内容以及开头括号(
)后面的内容。我们使用捕获组来隔离所需的输出。trimws
删除前导空格和尾随空格。另一个想法
trimws(sub(".*–([^\\(]+).*", "\\1", string))
# [1] "Latin America & Caribbean" "North America"
删除–
之前和之后的所有内容以及开口括号(
。我们使用捕获组来隔离所需的输出。trimws
删除前导空格和尾随空格。我认为您要查找的可能是正则表达式。我认为您要查找的可能是正则表达式的副本。可能的副本出于某种未知原因,我重新运行代码tod是的,字符串“Trade”没有消失。我试图查看我的代码中是否有任何无意的更改,但没有发现任何更改。你认为问题与R有关吗?@msh855-很可能R本身有任何损坏(因为我已经使用R 10多年了,从未经历过类似的事情)。您的输入string
是否发生了变化?更有可能的是string
的格式发生了变化,正则表达式不再捕获字符串的各个部分。您能否重新上传string
?由于我不知道的原因,我今天重新运行了代码,字符串“Trade”没有消失。我试图看看是否有任何意外我的代码发生了变化,但我没有发现任何变化。你认为这个问题与R有关吗?@msh855-很可能R本身会有任何损坏(就像我使用R 10多年,从未经历过类似的事情一样)。您的输入字符串
是否更改?更有可能的是字符串
的格式已更改,并且正则表达式不再捕获字符串的部分。您能否重新上载字符串
?