我正在使用R,版本3.3.1。我有以下专栏:
my_column <-
c("1. SuvlasniÄŤki dio: 1/21. SuvlasniÄŤki dio: 1/2 ", "CRKVENAC ANDRIJA, GAREĹ NICA KBR. 42CRKVENAC ANDRIJA, GAREĹ NICA KBR. 42 ",
"2. SuvlasniÄŤki dio: 1/22. SuvlasniÄŤki dio: 1/2 ", "CRKVENAC LJUBICA ROÄ. VERTUĹ , GAREĹ NICA KBR. 42CRKVENAC LJUBICA ROÄ. VERTUĹ , GAREĹ NICA KBR. 42 ",
"*1. Vlasnički dio: 1/1*1. Vlasnički dio: 1/1 ", "*MUHVIĆ IVAN, ANTUNOV, GAREŠNICA, MATIJE GUPCA 3*MUHVIĆ IVAN, ANTUNOV, GAREŠNICA, MATIJE GUPCA 3 ",
"2. SuvlasniÄŤki dio: 1/22. SuvlasniÄŤki dio: 1/2 ", "ANÄAL-MLINARIĆ BRIGITA, BJELOVAR, V. LISINSKOG KBR. 4ANÄAL-MLINARIĆ BRIGITA, BJELOVAR, V. LISINSKOG KBR. 4 ",
"3. SuvlasniÄŤki dio: 1/23. SuvlasniÄŤki dio: 1/2 ", "ANÄAL LIDIJA, GAREĹ NICA, MATIJE GUPCA KBR. 156ANÄAL LIDIJA, GAREĹ NICA, MATIJE GUPCA KBR. 156 "
)
列中的字符串以字母,数字,*数字或*字母开头。我想删除所有以number和* number开头的字符串。我尝试了以下代码:
my_column[grepl(pattern = "(?=^[^\\*]\\D{2})(?=^\\D)", x = my_column, perl = TRUE)]
# [1] "CRKVENAC ANDRIJA, GAREĹ NICA KBR. 42CRKVENAC ANDRIJA, GAREĹ NICA KBR. 42 "
# [2] "CRKVENAC LJUBICA ROÄ. VERTUĹ , GAREĹ NICA KBR. 42CRKVENAC LJUBICA ROÄ. VERTUĹ , GAREĹ NICA KBR. 42 "
# [3] "ANÄAL-MLINARIĆ BRIGITA, BJELOVAR, V. LISINSKOG KBR. 4ANÄAL-MLINARIĆ BRIGITA, BJELOVAR, V. LISINSKOG KBR. 4 "
# [4] "ANÄAL LIDIJA, GAREĹ NICA, MATIJE GUPCA KBR. 156ANÄAL LIDIJA, GAREĹ NICA, MATIJE GUPCA KBR. 156 "
但它只返回以字母而不是*字母开头的字符串?
答案 0 :(得分:4)
尝试使用:
x[!grepl("^\\*?\\d.*$", x)]
[1] "CRKVENAC ANDRIJA, GAREL NICA KBR. 42CRKVENAC ANDRIJA, GAREL NICA KBR. 42 "
[2] "CRKVENAC LJUBICA ROÄ. VERTUL , GAREL NICA KBR. 42CRKVENAC LJUBICA ROÄ. VERTUL , GAREL NICA KBR. 42 "
[3] "*MUHVIĆ IVAN, ANTUNOV, GAREL NICA, MATIJE GUPCA 3*MUHVIĆ IVAN, ANTUNOV, GAREL NICA, MATIJE GUPCA 3 "
[4] "ANÄAL-MLINARIĆ BRIGITA, BJELOVAR, V. LISINSKOG KBR. 4ANÄAL-MLINARIĆ BRIGITA, BJELOVAR, V. LISINSKOG KBR. 4 "
[5] "ANÄAL LIDIJA, GAREL NICA, MATIJE GUPCA KBR. 156ANÄAL LIDIJA, GAREL NICA, MATIJE GUPCA KBR. 156 "
这里使用的正则表达式是:
^\\*?\\d.*$
这将匹配输入向量中以星号或开头的任何条目,以星号后跟数字开头(但后面没有其他内容)。然后,由此产生的逻辑向量否定,因为您不想匹配这些字符串。你可以在这里探索这个正则表达式:
答案 1 :(得分:2)
从字符串的开头(^
)开始,我们匹配零个或多个*
(\\**
)后跟一个数字([0-9]
)and negate
!`提取元素。
my_column[!grepl("^(\\**[0-9])", my_column)]
#[1] "CRKVENAC ANDRIJA, GAREL NICA KBR. 42CRKVENAC ANDRIJA, GAREL NICA KBR. 42 "
#[2] "CRKVENAC LJUBICA ROÄ. VERTUL , GAREL NICA KBR. 42CRKVENAC LJUBICA ROÄ. VERTUL , GAREL NICA KBR. 42 "
#[3] "*MUHVIĆ IVAN, ANTUNOV, GAREL NICA, MATIJE GUPCA 3*MUHVIĆ IVAN, ANTUNOV, GAREL NICA, MATIJE GUPCA 3 "
#[4] "ANÄAL-MLINARIĆ BRIGITA, BJELOVAR, V. LISINSKOG KBR. 4ANÄAL-MLINARIĆ BRIGITA, BJELOVAR, V. LISINSKOG KBR. 4 "
#[5] "ANÄAL LIDIJA, GAREL NICA, MATIJE GUPCA KBR. 156ANÄAL LIDIJA, GAREL NICA, MATIJE GUPCA KBR. 156 "
或将grep
与invert=TRUE
,
grep("^(\\**[0-9])", my_column, invert=TRUE, value=TRUE)
#[1] "CRKVENAC ANDRIJA, GAREL NICA KBR. 42CRKVENAC ANDRIJA, GAREL NICA KBR. 42 "
#[2] "CRKVENAC LJUBICA ROÄ. VERTUL , GAREL NICA KBR. 42CRKVENAC LJUBICA ROÄ. VERTUL , GAREL NICA KBR. 42 "
#[3] "*MUHVIĆ IVAN, ANTUNOV, GAREL NICA, MATIJE GUPCA 3*MUHVIĆ IVAN, ANTUNOV, GAREL NICA, MATIJE GUPCA 3 "
#[4] "ANÄAL-MLINARIĆ BRIGITA, BJELOVAR, V. LISINSKOG KBR. 4ANÄAL-MLINARIĆ BRIGITA, BJELOVAR, V. LISINSKOG KBR. 4 "
#[5] "ANÄAL LIDIJA, GAREL NICA, MATIJE GUPCA KBR. 156ANÄAL LIDIJA, GAREL NICA, MATIJE GUPCA KBR. 156 "
注意:基于OP的帖子But it returns only strings that start with letter and not * letter words?