R regex从字符串中提取10个等级

时间:2016-08-10 16:51:03

标签: regex r

我有一些文本字符串,我想从中提取某些信息。特别是我想从10中提取10个评级。

我想帮助构建一个执行以下操作的函数text_string_vec <- c('blah$2.94 blah blah 3/10 blah blah.', 'foo foo 8/10.', '10/10 bar bar21/09/2010 bar bar', 'jdsfs1/10djflks5/10.') func_to_extract_rating <- function(){} output <- lapply(text_string_vec,func_to_extract_rating) output [[1]] [1] 3 10 [[2]] [1] 8 10 [[3]] [1] 10 10 [[4]] [[4]][[1]] [1] 1 10 [[4]][[2]] [1] 5 10 ...

    File lockFile = new File(target.getParent(), target.getName() + "#LOCK");
    lockAccessFile = new RandomAccessFile(lockFile, "rw");
    FileChannel lockChannel = lockAccessFile.getChannel();
    lock = lockChannel.lock();

2 个答案:

答案 0 :(得分:3)

这样的事情可能是:

float:left;

但是因为它总是超过10,如果你只想要数字等级,你可以这样做:

library(stringr)

result = str_extract_all(text_string_vec, "[0-9]{1,2}/10")
result = lapply(result, function(x) gsub("/"," ", x))

[[1]]
[1] "3 10"

[[2]]
[1] "8 10"

[[3]]
[1] "10 10"

[[4]]
[1] "1 10" "5 10"

答案 1 :(得分:1)

这是base R选项

lapply(strsplit(str1, "([0-9]{1,2}\\/10)(*SKIP)(*FAIL)|.", perl = TRUE),
         function(x) {
         lst <- lapply(strsplit(x[nzchar(x)], "/"), as.numeric)
         if(length(lst)==1) unlist(lst) else lst})
#[[1]]
#[1]  3 10

#[[2]]
#[1]  8 10

#[[3]]
#[1] 10 10

#[[4]]
#[[4]][[1]]
#[1]  1 10

#[[4]][[2]]
#[1]  5 10