regex - 如何在R中条件下的字符串后添加 "."

标签 regex r nlp conditional-statements

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/

相关文章:

c# - 使用正则表达式扫描 T-SQL 的对象依赖关系

正则表达式 - 在逗号字符后丢弃文本

regex - 找到一个模式并替换整行&找到一个模式并插入到后面

javascript - 新的正则表达式不起作用

r - 将相关的嵌套列表元素向量组合成矩阵

nlp - LUIS 将意图数量限制为 20

python - 使用均值法从word2vec词向量计算句子向量的具体步骤是什么?

r - 将匿名函数作为参数传递

r - 首先和最后使用 dplyr 但忽略 NA 值

nlp - 有关拼写检查的文献?