在R中优化我的正则表达数年和数月

时间:2015-07-14 06:41:22

标签: regex r

我正在尝试使用以下正则表达式提取R语言的年/月经验,但

  1. 我无法对其进行优化并将其缩短,

  2. 它还提取不存在数字值的条目,但仅存在数月/年。

  3. 我只需要从语料库中找到它们所在的特定文档中提取数年后的数字值,然后将它们存储在包含与其相对应的文档ID的列表中

    gregexpr("[0-9]{1,2}\\.?[0-9]{0,2}(\\+)?\\s*([Yy][Ee][Aa][Rr][Ss]|[Yy][Rr][Ss]|[Yy][Ee][Aa][Rr]|[Yy][Rr]?\\.?))"
    
    gregexpr("[0-9]{0,2}(\\+)?\\s*([Mm][Oo][Nn][Tt][Hh][Ss]|[Mm][Oo][Nn][Tt][Hh]?\\.?)"
    

    但似乎我正在制作正则表达式太久了。不区分大小写的“\ i”似乎也不起作用。 作为参考,语料库中可能存在以下组合: -

    3.5/ 3.5+ / 3+ / 16.5 / 15+ /16.5+  years/yrs./yrs of experience
    6 / 6.5 / 16 / 16.5 months of experience
    

    提取这些字符串后,我计划提取数值并将它们分别存储在年份和月份的列表中,然后是doc名称。

    以下是代码:

    listYears <- c()
    listMonths <- c()
    
    print("Year containing Resumes are")
    for (i in 1:l)
    {
      k = regmatches(as.String(docs[[i]]), gregexpr("[0-9]{1,2}\\.?[0-9]{0,2}(\\+)?\\s*([Yy][Ee][Aa][Rr][Ss]|[Yy][Rr][Ss]|[Yy][Ee][Aa][Rr]|[Yy][Rr]?\\.?)", as.String(docs[[i]])))
      if (as.character(k) != "character(0)")
      {
        print(meta(docs[[i]])$id)
        print(k)
        len_k1 = list(meta(docs[[i]])$id)
        listYears = c(listYears,len_k1)
      }
      else
      {
        k = regmatches(as.String(docs[[i]]), gregexpr("[0-9]{0,2}(\\+)?\\s*([Mm][Oo][Nn][Tt][Hh][Ss]|[Mm][Oo][Nn][Tt][Hh]?\\.?)", as.String(docs[[i]])))
        if (as.character(k) != "character(0)")
        {
          print(meta(docs[[i]])$id)
          print(k)
          len_k2 = list(meta(docs[[i]])$id)
          listMonths = c(listMonths,len_k2)
        }
    
      }
    }
    

0 个答案:

没有答案