最简单的正则表达式匹配任何字符

时间:2017-03-30 22:19:52

标签: r regex gsub

我正在尝试使用R中的正则表达式匹配单词amazonmturk的任何实例。在SO上阅读维基时,我发现说“任何字符”的方式是{{ 1}}。有人能解释为什么这不能给我预期的输出(如下所示)?

.*

目标

data<-data.frame(c("hi"),c("amazon mturk"),c("Amazon"),c("XXXAmazon","mturk.com")) #should return: hi, amazon, amazon, amazon, amazon
data
docs2<-gsub("[.*amazon.*|.*mturk.*]", "amazon",tolower(data), perl=TRUE)
docs2


#test code
gsub("bye","--","hibye")

1 个答案:

答案 0 :(得分:1)

每当我需要Regex的复习时,我想咨询这个备忘单: https://www.cs.tut.fi/~jkorpela/perl/regexp.html

那里还有很多交互式模拟器,这是我使用的模拟器: http://www.regexplanet.com/

您的主要错误可能是“[]”。在Perl语法中,括号使匹配能够搜索任何这些字母。

我不知道R,所以我将在Perl中演示这一点。我喂了这个字符串: $str = "hi amazon mturk Amazon XXXAmazon mturk.com";

当我表演时: @matches = ($str =~ /[.*amazon.*|.*mturk.*]/g); 我得到了一系列丑陋的单字母匹配,包括句号。但是,你也可以只做一个/或没有括号。例如: @matches = ($str =~ /amazon|mturk/gi); 给了我:

  

amazon mturk Amazon Amazon mturk