如果字符串包含子集

问题描述 投票:0回答:1

我有字符串向量。向量(字符串)的某些元素包含sp z o.o.,这是“spółkazograniczonąodpowiedzialnością”的缩写。

first sp.z.o.o.
second s.a          #should be removed
kpt spółka z ograniczoną odpowiedzialnością #should be removed, it is not acronym
third sp z o o 
fourth PP           #should be removed
fifth sp z o.o.
przedszkole niepubliczne im.janusza korczaka #should be removed
sixth               #should be removed
seventh sp z oo 
eighth LTD.         #should be removed
nineth sp-z-o-o
tenth spzoo
sklep spożywczy na górnych adam kłaptocz #should be removed
elita sp.c. zofia szatkowska, tomasz szatkowski #should be removed
eleventh sp.zo.o
towarzystwo przyjaciół chorych "sądeckie hospicjum" #should be removed

我只想将包含sp z o.o.的所有可能组合的子集作为子集,带和不带空格/双空格,点,逗号和其他符号(例如* |-等)。为此,我尝试使用下面的代码,但是它不起作用。sample <- df[grepl("(sp\\.z\\.o\\.o\\.)", df$col_1), ]并且sample <- df[grepl("(sp\\.*z\\.*o\\.*o\\.*)", df$col_1), ]编辑Ronak Shah建议:grep('s.*p.*z.*o', x, value = TRUE)它可以工作,但是返回不应被子集化的字符串,例如:elita sp.c. zofia szatkowska, tomasz szatkowski"społem" powszechna spółdzielnia spożywców w myśliborzu

我想对首字母缩写词sp z o.o.具有不同变体的字符串进行子集化,并且还要避免所有不包含首字母缩写词的字符串

r regex nsregularexpression
1个回答
1
投票

我们可以使用以下模式:

sample <- subset(df, grepl('s.*p.*z.*o', col_1))

当我们在字符串中有spzoo时,将选择行,而不管其间的任何内容。

我们可以在向量上测试正则表达式。

x <- c('first sp.z.o.o.', 'second s.a', 'third sp z o o', 'fourth PP',
       'fifth sp z o.o.', 'sixth', 'seventh sp z oo', 'eighth LTD.', 
       'nineth sp-z-o-o', 'tenth spzoo', 'eleventh sp.zo.o')

grep('s.*p.*z.*o', x, value = TRUE)

#[1] "first sp.z.o.o."  "third sp z o o"   "fifth sp z o.o."  "seventh sp z oo" 
#[5] "nineth sp-z-o-o"  "tenth spzoo"      "eleventh sp.zo.o"

编辑

对于更新后的数据集,我们可以使用

sample <- subset(df, grepl('sp.?z.?o.?o', col_1))
© www.soinside.com 2019 - 2024. All rights reserved.