在R中如何匹配和提取文本中的特定单词,而不管其形成如何?

时间:2016-10-23 15:02:08

标签: r pattern-matching

我有以下示例文本,我想从文本中仅提取机器学习

**OnBind**

 holder.cb.setOnCheckedChangeListener(null);
 holder.cb.setChecked(n.isStatus());
 holder.registerCheckedChangeListener();

**ViewHolder**

 private void registerCheckedChangeListener(){
        cb.setOnCheckedChangeListener(this);
  }

但它正在回归我..

text <- c("Machine Learning is my fav topic.", "I love machinelearning.")

ifelse((found <- regexpr("\\sMachine Learning", text, 
                     perl =TRUE)) !=-1, substring(text, found, 
                          found+attr(found,"match.length")), "nothing found")

我必须得到结果:

"nothing found" "nothing found"

2 个答案:

答案 0 :(得分:1)

(?i)使正则表达式不区分大小写。使用“机器”模式,后跟零或更多空格(\\s*),然后选择“学习”

library(stringr)
unlist(str_extract_all(text, "(?i)Machine\\s*Learning"))
#[1] "Machine Learning" "machinelearning" 

答案 1 :(得分:1)

我有2分,请看下面:

1)当你想要搜索你提到的两个短语时,你应该将表达式用作“machine \ s?learning”。的?在\ s之后会忽略空间。

2)使用regexpr查找匹配项,然后使用regmatches()函数提取文本。

> text <- c("Machine Learning is my fav topic.", "I love machinelearning.")
> m <- regexpr("machine\\s?learning", text, perl=TRUE,  ignore.case = TRUE)
> regmatches (text, m)

[1] "Machine Learning" "machinelearning"