带正则表达式的 Moodle 测验类型

Fra*_*Kam 1 moodle

我的学术系主任给了我一个有趣的问题,让我在 Moodle 测验中实现。

我有一个测验问题,我在其中呈现一个输入编辑框。也许是完形填空,或者问题类型的正则表达式类型。我现在还不确定。

该问题得分为 2 分。有一个输入框,并且根据输入字符串的两个小节对输入进行评分。

评分方案1:
你已经听从了他的建议| 没有(任何)争论

评分方案1的含义:
如果学生输入“你已经听从了他的建议”,则获得1分。如果学生的句子还包含“没有论证”或“没有任何论证”,则再获得 1 分。两个部分的顺序都很重要。我不能让学生输入“毫无争议,你已经听从了他的建议”并给出 2 分。

评分方案2:
学生应该 | 必须参加/参加/参加考试

评分方案2的含义:
如果学生输入“学生应该”,则获得1分。如果学生的句子还包括“必须参加考试”或“必须参加考试”或“必须参加考试”,则再获得 1 分。两个部分的顺序都很重要。我不能让学生输入“毫无争议,你已经听从了他的建议”并给出 2 分。

我有什么想法可以实现这个吗?

问候弗兰基·卡姆

后记。老鼠。刚刚被降级,因为这是一个“钓鱼施舍”的问题。当之无愧。我现在通过http://regexone.com/学习正则表达式,以便将来我的问题可以更加以研究为导向,更具建设性......!

Fra*_*Kam 5

好吧,自从我在没有提供先前研究证据的情况下提出问题以来,没有人帮助我。因此,我不再依赖鱼的施舍,而是决定自己投饵并自己钓鱼。我的意思是,我自己谷歌。好吧,经过 48 小时在整个万维网上摸索之后,我得到了答案!

诀窍是在 Moodle Cloze 问题类型语法中使用“正则表达式简答问题类型”语法。令人困惑?希望以下链接和信息能让您更清楚:

  1. 您需要从此处下载并安装“正则表达式简答问题类型”插件https://moodle.org/plugins/view.php?plugin=qtype_regexp

下载并安装到您的 /question/type/ 文件夹。

{2:REGEXP:~=students should have to take exams~=students should have to (take|do|sit) 
exams~%50%students should.*#Feedback for half credit answer~%50%.*(have to 
(take|do|sit) exams)$#Feedback for half credit answer}

{2: ... } means that this question is worth 2 marks

{..:REGEXP:...} identifies this question as a regular expression variant of the short 
answer question type. It accepts non-case sensitive input strings and processes them 
accordingly.

"~=students should have to take exams" (minus the ") 
Run Code Online (Sandbox Code Playgroud)

意味着这是 100% 的答案,价值 2 分。

  1. 确保您还在您的 Moodle 安装中下载并安装了所需的 Behaviour more 插件。这些插件有 2 个问题行为,位于:https: //github.com/rezeau/moodle-qbehaviour_regexpadaptivewithhelphttps://github.com/rezeau/moodle-qbehaviour_regexpadaptivewithhelpnopenalty 或从 Moodle 的插件存储库下载,网址为http://moodle .org/plugins/browse.php?list=category&id=31 下载两者并安装到您的 /question/behaviour/ 文件夹。

  2. 为了在完形填空语法中使用“正则表达式简答问题类型”语法(稍后会详细介绍),您需要复制 2 个被黑的文件并覆盖您的 /question/type/multianswer 文件夹。

您可以阅读有关这一关键步骤的信息: http://docs.moodle.org/25/en/question/type/regexp#The_RegExp_Short_Answer_Question

  1. 学习正则表达式!无法替代了解基础知识。我的意思是,在不了解规则和基础知识的情况下,如何期望在国际象棋、五人制足球或桥牌比赛中获胜呢?因此,别再胡言乱语了,去谷歌搜索一些网上最好的正则表达式资源吧。我用来完成这项工作的正则表达式资源分为三类。

4.1 对于正则表达式新手: http: //regexone.com/

4.2 更多参考资料、编码示例和语法: https://kb.wisc.edu/moodle/page.php?id=26623 http://www.stedee.id.au/Learn_Regular_Expressions-WildCards http://www.stedee.id.au/Learn_Regular_Expressions-WildCards tjhsst.edu/~dhyatt/perl/exA.html http://stefanstools.sourceforge.net/regexhelp.html http://www.regular-expressions.info/characters.html

4.3 用于测试正则表达式代码结果的交互式正则表达式工具(非常有用!): http://www.regular-expressions.info/javascriptexample.html

  1. 现在去 Moodle 工作室的地下室,动手做一些原始编码和所有算法的东西。您知道计算机科学家、软件工程师和程序员滔滔不绝地说出的那些话,却让普通 IT 用户难以理解。我正在学习正则表达式代码,宝贝!本节是 stackoverflow 用户来到这里的目的。看看你是否有比头脑更好的解决方案。哦,是的,那是一次大胆的尝试。

以下面的代码为例。

I don't think {2:REGEXP:~=students should have to take exams~=students should have to 
(take|do|sit) exams~%50%students should.*#Feedback for half credit answer~%50%.*(have 
to (take|do|sit) exams)$#Feedback for half credit answer} exams.
Run Code Online (Sandbox Code Playgroud)

结果屏幕是这样的。

一种简短的答案语法,已注入正则表达式类固醇以增强其功能。 是的,宝贝!

现在让我们把它分解成字母汤,好吗?

"~=students should have to (take|do|sit) exams" 
Run Code Online (Sandbox Code Playgroud)

意味着 Noodle,我的意思是 Moodle,将为这些输入中的任何一项授予 2 个满分:

students should have to take exams
students should have to do exams
students should have to sit exams

"~%50%students should.*" 
Run Code Online (Sandbox Code Playgroud)

意味着如果输入的前半部分包含不区分大小写的字符串“students should”,Moodle 的测验引擎将授予 1 分(即 2 分的 50%)。因此,像“学生应该详细阅读”这样的输入会给你 1 分。

"~%50%.*(have to (take|do|sit) exams)$#Feedback for half credit answer" 
Run Code Online (Sandbox Code Playgroud)

表示如果您输入句子结尾为以下内容的字符串,则您将获得 1 分(满分 2 分):

“必须参加考试”或“必须参加考试”或“必须参加考试”。

美元符号 ($) 是此正则表达式代码背后的大脑,用于检测句子是否以该特定字符串值结尾。因此,输入的结尾是“克鲁斯必须做考试,宝贝!” 将不匹配。只有像“克鲁斯爬上迪拜塔,他们还得做考试”这样的句子才能真正匹配。

所以你有它。我已经成功玩了正则表达式游戏。将死我的正则表达式宿敌!在我的整个编程生涯中,你一直困扰着我。现在轮到你了,你这个正则表达式妖怪!我终于对正则表达式的理解达到了相当水平,足以让我编写和编程一个 Moodle 问题类型,其中包含一些人工的、伪假的人工智能。

现在我已经回答了自己的问题,是时候将这篇 StackOverflow 帖子的分数从卑鄙的 -2 提高到 N 正了。各位 stackoverflow 地球人,请投票吧!

问候,弗兰基“我对这些正则表达式的东西简直要生气了”卡姆赞美上帝!