-1

我有一列数据集,如下所示:

$abc.MSFT

$MSFT

$msft

$abcMSFTxyz

我想要以下输出:

$MSFT  

$msft

我的过滤尝试:

dplyr::filter(Tweets, grepl("\\bMMM$\\b", ignore.case = TRUE, V2))

返回:

$abc.MSFT

$MSFT

$msft

或者

dplyr::filter(Tweets,grepl("^$MMM$", ignore.case = TRUE, V2))

返回:

4

1 回答 1

0

一种接近它的方法:

x <- c("$abc.MSFT", "$MSFT", "$msft", "$abcMSFTxyz")
Tweets <- data.frame(V2=x, stringsAsFactors=F)
Tweets
#           V2
#1   $abc.MSFT
#2       $MSFT
#3       $msft
#4 $abcMSFTxyz

#your way
dplyr::filter(Tweets, grepl("\\bMMM$\\b", ignore.case = TRUE, V2))
[1] V2
<0 rows> (or 0-length row.names)

#another way
dplyr::filter(Tweets, grepl("^\\$msft$", ignore.case = TRUE, V2))
     V2
1 $MSFT
2 $msft

正则表达式帮助

..有12个具有特殊含义的字符:反斜杠\、插入符号^、美元符号$、句点或点.、竖线或竖线符号|、问号?、星号或星号*、加号符号+、左括号(,右括号)和左方括号[,左大括号{,这些特殊字符通常称为“元字符”。

和修复:

如果您想将这些字符中的任何一个用作正则表达式中的文字,则需要使用反斜杠对其进行转义。如果要匹配 1+1=2,正确的正则表达式是 1\\+1=2。否则,加号有特殊含义。

研究正则表达式。他们值得花时间学习你想编程的任何语言。

于 2015-10-08T01:58:56.083 回答