Data <- c("My name is Ernst.","I love chicken","Hello, my name is Stan!","Who?","I Love you!","Winner")
函数应该添加一个“。”如果句子末尾没有这些符号 [.?!] 来结束句子。
我试图在 Regex 的帮助下在 R 中构建一个函数,但我遇到了一些问题,只能查看字符串的结尾。
最佳答案
只有当句子不是以 .
或 ?
结尾时,下面的 gsub
函数才会在句子的末尾添加一个点或 !
符号。
> Data <- c("My name is Ernst.","I love chicken","Hello, my name is Stan!","Who?","I Love you!","Winner")
> gsub("^(?!.*[.?!]$)(.*)$", "\\1.", Data, perl=TRUE)
[1] "My name is Ernst." "I love chicken."
[3] "Hello, my name is Stan!" "Who?"
[5] "I Love you!" "Winner."
在正则表达式中,前瞻用于条件检查。否定的前瞻 (?!.*[.?!]$)
将检查是否存在 .
或 ?
或 !
在行尾。如果它出现在最后,那么它会跳过句子,并且替换永远不会发生在相应的行上。仅当最后没有 .
或 ?
或 !
符号时才会发生替换。
或
通过消极的后视和积极的前瞻,
> Data <- c("My name is Ernst.","I love chicken","Hello, my name is Stan!","Who?","I Love you!","Winner")
> sub("(?<![!?.])(?=$)", ".", Data, perl=TRUE)
[1] "My name is Ernst." "I love chicken."
[3] "Hello, my name is Stan!" "Who?"
[5] "I Love you!" "Winner."
关于regex - 如何在R中条件下的字符串后添加 ".",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25581640/