如何提取后跟任意数字的特定字符串?

时间:2018-06-22 17:00:09

标签: r

我有一个小问题。 我的文本格式如下:

$('#uploadBtn').on('click', function()
{
    var form_data = new FormData();
    form_data.append("file", document.getElementById('pdfFile').files[0]);
    form_data.append('booking', $('#bookingNum').val());
    form_data.append('partner', $('#partnerCode').val());

    $.post('process/fileUpload.php', form_data, function(data)
        {
            console.log(data);
        });
});

我想获得以下输出:

A.1 Goals

Section 1: Blah Blah Blah
Random sentence A. Random sentence.
Section 2: Blah Blah Blah
Random sentence A.
Random sentence.

A.2 description

因此,基本上,如何获得重复多次且后跟任意可能的数字(相同字符串和不同数字的任何模式)的任何字符串

2 个答案:

答案 0 :(得分:2)

阅读grep后,我们可以使用readLines。在这里,我们匹配 字母(“ A”后跟.,再跟一个或多个数字-\\d+)或(|)(如果文本以“ Section”(^Section)开头后面跟一些字符(.*),如果有重复的单词,后面跟空格((\\w+\\s*)\\1-\\1是捕获组的后向引用)

out <- grep("(^A\\.\\d+)|(^Section.*\\b(\\w+\\s*)\\1)", lines, value = TRUE)
cat(out, sep= "\n\n")
#A.1 Goals

#Section 1: Blah Blah Blah

#Section 2: Blah Blah Blah

#A.2 description

数据

lines <- readLines("file.txt") #reading from the file

答案 1 :(得分:2)

您可以尝试执行此操作,但是我不确定确切的输出:

string <- c("Section 1: Blah Blah Blah","Random sentence A. Random sentence.",
"Section 2: Blah Blah Blah","Random sentence A.",
"Random sentence.")

 grep("(\\w+)\\s+\\1\\s+\\1",string, value=TRUE)

逻辑:单词被括在括号内以捕获它,然后可以将其捕获到\\1中以得到重复。选取两个\\1的实例,建议我们要选择两次以上。

我假设类似的结构,这个词后面必须有一个空格,然后是这个词。

输出

[1] "Section 1: Blah Blah Blah" "Section 2: Blah Blah Blah"

在OP请求后添加

通过invert = TRUE中的grep,您可以更改匹配项

 grep("(\\w+)\\s+\\1\\s+\\1",string, value=TRUE,invert = TRUE)

因此正则表达式上方将导致:

#[1] "Random sentence A. Random sentence."
#[2] "Random sentence A."                 
#[3] "Random sentence."