我已经在一些 Rscripts 上创作了一些关于 R 的教程。我需要一个不带答案的 Handout Set(HS)和编码集(CS),供学生编写代码。我需要一些正则表达式来搜索 HO 中的答案部分,以便我可以从 CS 中删除它。
在 HS 中,我在答案前后有起始(#'YOUR_ANSWER)和结束(#'END_ANSWER) 标志。为了创建 HO 集,我需要将 替换为
我尝试过正则表达式,但没有替换结果。
如果我不使用正则表达式,只是查找 "YOUR_ANSWER" - 替换就有效果。
但是这种组合不起作用。正则表达式应该有效,请参考以下内容:
在 HS 中,我在答案前后有起始(#'YOUR_ANSWER)和结束(#'END_ANSWER) 标志。为了创建 HO 集,我需要将 替换为
YOUR_ANSWER
As_samp2 = 36
As_samp3 = 38
#'END_ANSWER
使用
"space for answer".
所以如果我的文本是在a标签中:
a = "#'YOUR_ANSWER
As_samp2 = 36
As_samp3 = 38
#'END_ANSWER"
我尝试过正则表达式,但没有替换结果。
b <-gsub(pattern = "YOUR_ANSWER(.*\n*)*#'END_ANSWER", a, replace="space for answer" )
如果我不使用正则表达式,只是查找 "YOUR_ANSWER" - 替换就有效果。
c <-gsub(pattern = "YOUR_ANSWER", a, replace="space for answer" )
如果只使用正则表达式进行操作,那么所有的文本都将被替换。
d <- gsub(pattern = "(.*\n*)*", a, replace="space for answer" )
但是这种组合不起作用。正则表达式应该有效,请参考以下内容:
https://regex101.com/r/USvzLF/1
所以一定有一些深奥的R语言技巧我还没有掌握
b <- gsub(pattern = "YOUR_ANSWER(.*\n*)*END_ANSWER", a, replace="space for answer" )
c <- gsub(pattern = "YOUR_ANSWER", a, replace="space for answer" )
d <- gsub(pattern = "(.*\n*)*", a, replace="space for answer" )
我希望将YOUR_ANSWER和END_ANSWER之间的所有内容替换为空格以获取答案,但是没有任何反应。你有什么想法吗? 现在UPDATE,@r2evans已经向我展示了工作正则表达式; 我正在尝试更改的R脚本为https://pastebin.com/mnjpkUFk (即myfile) 我使用的代码(在单独的R脚本中)是: FileM <- readLines(myfile) FileMedit <- gsub(pattern = "YOUR_ANSWER", FileM, replace="space for answer" ) FileMedit <- gsub(pattern = "YOUR_ANSWER.*END_ANSWER", FileM, replace="space for answer" ) writeLines(FileMedit,file = "outputfileM.R")
gsub("#'YOUR_ANSWER.*END_ANSWER", "(space for answer)", a)
不够好用吗?这实际上就是你的b
... 对我也适用。 - r2evans