第一个单词的子字符串检测

时间:2019-04-11 23:57:29

标签: r regex string substring stringr

我正在检测报告中的子字符串,然后根据子字符串是否存在来在报告末尾添加后缀单词。较短的单词很危险,因为它们通常是较长的单词的一部分。例如:耳朵和超过耳朵。空格键往往是一个合理的解决方案。因此,不是搜索子字符串“ ear”,而是使用“ ear”。请注意子字符串前面的空白。子字符串末尾没有空格,因为我不想错过复数的耳朵。 问题在于,整个报告中的第一个单词是Ear。没有前导空格。

我试图用库字符串来解决该问题,但在每个报告的开头都添加了一个空格,但文本未更改地返回。

(stringr)
Data$Fail <- str_pad(Data$text, width = 1, side = "left")

2 个答案:

答案 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"