删除 R 中特定位置的单词以外的字符串
Remove a string except words in specific position in R
我有以下字符串
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)" )
在此字符串中,我想删除除“中间”句以外的所有内容。
我的预期结果应该是这样的:
excpected_string <- c("Latin America & Caribbean", "North America" )
谁能帮助我如何使用 gsub
您可以使用正则表达式来做到这一点。基于这两个示例,我确定的两种模式是 1) 删除 -
之前的所有内容,以及 2) 删除括号 ()
.
中的所有内容
这是一种解决方案:
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)" )
gsub("^.*\s–\s|\s*\([^\)]+\)", "", string)
#> [1] "Latin America & Caribbean" "North America"
由 reprex package (v0.2.1)
于 2019-03-10 创建
正则表达式的第一部分 ^.*\s–\s
表示 "grab all the characters from the start of the string before we find -
"。
在正则表达式中,|
表示或,因此第二个正则表达式 \s*\([^\)]+\
标识括号内的所有文本(和前导/尾随空格)。该正则表达式归功于 to this question。
另一个想法
trimws(sub(".*–([^\(]+).*", "\1", string))
# [1] "Latin America & Caribbean" "North America"
删除包括 –
在内的所有内容以及左括号 (
之后的内容。我们使用捕获组来隔离所需的输出。 trimws
删除前导和尾随空格。
我有以下字符串
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)" )
在此字符串中,我想删除除“中间”句以外的所有内容。
我的预期结果应该是这样的:
excpected_string <- c("Latin America & Caribbean", "North America" )
谁能帮助我如何使用 gsub
您可以使用正则表达式来做到这一点。基于这两个示例,我确定的两种模式是 1) 删除 -
之前的所有内容,以及 2) 删除括号 ()
.
这是一种解决方案:
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)" )
gsub("^.*\s–\s|\s*\([^\)]+\)", "", string)
#> [1] "Latin America & Caribbean" "North America"
由 reprex package (v0.2.1)
于 2019-03-10 创建正则表达式的第一部分 ^.*\s–\s
表示 "grab all the characters from the start of the string before we find -
"。
在正则表达式中,|
表示或,因此第二个正则表达式 \s*\([^\)]+\
标识括号内的所有文本(和前导/尾随空格)。该正则表达式归功于 to this question。
另一个想法
trimws(sub(".*–([^\(]+).*", "\1", string))
# [1] "Latin America & Caribbean" "North America"
删除包括 –
在内的所有内容以及左括号 (
之后的内容。我们使用捕获组来隔离所需的输出。 trimws
删除前导和尾随空格。