我正在尝试匹配确切的文字。在下面的代码中,我尝试使用/ b 2016 / b来分割2016年后的空格,但这与0,1,2或6相匹配。我以哪种方式指示字符串I的开头和结尾我想在下面的代码中进行匹配,以便strsplit
仅在2016年的两个代码之后进行分组。感谢
x <- "January 2016 February 2016 411,236 410,236 gold 54 end 6 only"
strsplit(x, "(?<=[/b2016/b])\\s+", perl = TRUE)
[[1]]
[1] "January 2016" "February 2016" "411,236"
[4] "410,236" "gold 54 end 6" "only"
答案 0 :(得分:2)
忽略括号:
strsplit(x, "(?<=2016)\\s+", perl = TRUE)
答案 1 :(得分:1)
我们可以使用str_extract
仅提取4位数字
library(stringr)
str_extract_all(x, "\\b[0-9]{4}\\b")[[1]]
或者更确切地说
str_extract_all(x, "(?<=[A-Za-z]{1,8}\\s)\\b[0-9]{4}\\b")[[1]]
#[1] "2016" "2016"
答案 2 :(得分:0)
您可以更好地使用gsub
功能来实现目标:
gsub("2016", "2 0 1 6",x)
将一个字符序列替换为另一个字符序列。结果是:
[1] "January 2 0 1 6 February 2 0 1 6 411,236 410,236 gold 54 end 6 only"