我正在使用R提取字符串“ ***** END OF REPORT *****”,在报告中间有很多字符串,我只想提取最后一个“ ***” **报告末尾*****”。
A不是我要提取的内容,因为它不是报告的真正结尾,因此后面是报告的下一部分; B是我想要的那个,因为它是报告的结尾,后跟一些符号,之后没有其他信息。
A:
" ***** END OF REPORT *****
¿ -----------------------------------------------------------------------
-------------------------------------------------------------
AABBCC00/A1 G E N E R A L L E D G E R
EFF DATE : 01/02/2019 PAGE : 1
AA111 GL TRANSACTION LISTING FROM 01/01/2019
TO 31/01/2019 RUN DATE : 02/02/2019 AT 01:09:15
-----------------------------------------------------------------------------
-------------------------------------------------------"
B:
" ***** END OF REPORT *****
· + ~ , o; J óX cg v
Ô” ¡¢ Å° ô¾ Í ‘Û"
下面是我到目前为止编写的正则表达式,但是不能正常工作。
str_detect(A,"(\\Q*****\\E END OF REPORT \\Q*****\\E\n.+)(?!--------------------$)" )
A应该返回FALSE; B应该返回TRUE(真实结束)。
答案 0 :(得分:0)
这里是解决该问题的另一种方法,该方法返回字符串“ END OF REPORT”的最后一次出现的行号:
library(stringr)
report <- readLines("/path/of/your/report")
tail(str_which(report, ".*END OF REPORT.*"), n = 1L)
此代码读取您的报告,并将其转换为字符向量,其中每一行都是一个元素。 str_which()
返回其中出现字符串“ END OF REPORT”的行号(实际上是索引),而tail()
为您提供最后一个。
答案 1 :(得分:0)
const makeFoo = () => {
let bar = () => { alert(1) }
let foo = () => { bar() }
return foo;
};
const makeFooStr = makeFoo.toString();
// ...
const makeFooFunc = new Function(' return (' + makeFooStr + ').apply(null, arguments)');
const foo = makeFooFunc();
foo();