我有一个小问题。 我的文本格式如下:
$('#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
因此,基本上,如何获得重复多次且后跟任意可能的数字(相同字符串和不同数字的任何模式)的任何字符串
答案 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."