我曾在这里和这里询问有关问题。尝试过归纳总结答案,但失败了。
基本上,我想把一个字符串分成单词、数字和任何类型的标点符号,但是我想保留撇号。以下是我尝试过的,我认为很接近:
基本上,我想把一个字符串分成单词、数字和任何类型的标点符号,但是我想保留撇号。以下是我尝试过的,我认为很接近:
x <- "Raptors don't like robots! I'd pay $500.00 to rid them."
strsplit(x, "(\\s+)|(?=[[:punct:]])", perl = TRUE)
## [[1]]
## [1] "Raptors" "don" "'" "t" "like" "robots" "!"
## [8] "" "I" "'" "d" "pay" "$" "500" "." "00" "to"
## [20] "rid" "them" "."
以下是我想要的内容:
## [[1]]
## [1] "Raptors" "don't" "like" "robots" "!" "" "I'd"
## [8] "pay" "$" "500" "." "00" "to" "rid" "them" "."
虽然我希望得到一个基本的解决方案,但我想看看其他的解决方案(我相信有人有一个stringr的解决方案),这将使问题更具普适性。
注意:R语言有一个特定的正则表达式系统。您需要了解R语言才能回答此问题。
identical(strsplit(x, "[[:space:]]|(?=[^'[:^punct:]])", perl=TRUE), strsplit(x, "(\\s+)|(?!')(?=[[:punct:]])", perl = TRUE)) # [1] TRUE
- eddi