我正在检测报告中的子字符串,然后根据子字符串是否存在来在报告末尾添加后缀单词。较短的单词很危险,因为它们通常是较长的单词的一部分。例如:耳朵和超过耳朵。空格键往往是一个合理的解决方案。因此,不是搜索子字符串“ ear”,而是使用“ ear”。请注意子字符串前面的空白。子字符串末尾没有空格,因为我不想错过复数的耳朵。 问题在于,整个报告中的第一个单词是Ear。没有前导空格。
我试图用库字符串来解决该问题,但在每个报告的开头都添加了一个空格,但文本未更改地返回。
(stringr)
Data$Fail <- str_pad(Data$text, width = 1, side = "left")
答案 0 :(得分:1)
Data$Fail <- str_pad(Data$text, width = 1, side = "left")
不起作用,因为 str_pad()
将字符串填充为固定长度,您将其指定为width = 1
,因此只能插入一个如果文本最初为空,则为空格。
但是,如果您只想在字符串的开头插入空格,则不需要特殊的库-text = paste("", text)
就可以。
答案 1 :(得分:0)
Armali已经回答了您的问题(使用paste('',text)
)以在耳朵前面添加一个空格。由于您还想在句子开头匹配耳朵,因此,最好使用HO LI Pin指出的正则表达式。
pattern <- '(?<![A-z])[Ee]ar'
仅当不后面带有任何其他字母时,此字符才匹配E / ear(因此,它仍可以带有_
,(
之类的东西,但是它可以您的问题尚不清楚是否允许,那么您可以使用基本R或更简单的stringr
库,使用此正则表达式模式搜索所有匹配项:
library(stringr)
pattern <- '(?<![A-z])[Ee]ar'
text = 'Ear this is some nice text as you can hear with your ear about overbearing'
unlist(str_extract_all(text, pattern, simplify = FALSE))
哪个会给你:
[1] "Ear" "ear"