这个问题是我之前的one的继续。我有向量的字符串。向量(字符串)的某些元素包含特定的缩写“ S.A.”。以及它的变化(有无点,也有多个空格)。
dino polska s.a.
elita sp.c. zofia szatkowska, tomasz szatkowski #shouldn't be subseted
studio urody "julia" renata kochańska #shouldn't be subseted
ccc s. a.
ls airport services sa
restauracja aleksandra odejewska #shouldn't be subseted
firma handlowa "eden ii" krystyna konowalska #shouldn't be subseted
auto land polska s a
为了对符合条件的字符串(包含“ s.a.”缩写)进行子集化,我使用了以下代码:
subset(df, grepl('.s.?.a.?', col_1))
通常它可以工作,但是它也包含不包含缩写的字符串的子集。
我还尝试改善常规表达代码
'^.s.?.a.?&'
'^(.s.?.a.?)&'
'\\s+.s.?.a.?'
'\\.s.?.a.?'
但是它不起作用。
我的问题是是否存在像正则表达式的锚这样的东西,以强调我在寻找单独的单词/表达式而不是其中的一部分。缩写应被视为一个单独的单词,而不是单词的一部分,应避免使用像kochań SKA (.s.?.a.?
)之类的东西。
答案 0 :(得分:2)
您可以使用
subset(df, grepl('\\bs\\.?\\s*a\\b', col_1))
请参见regex demo
详细信息
\bs
-不包含任何字母,数字或s
的{{1}}字母(因为_
是单词边界)\b
-可选点\.?
-超过0个空格\s*
-一个a\b
字母,后面没有任何字母,数字或a