好的,没有人帮助我,因为我在没有提供先前研究证据的情况下询问。因此,我决定自己投下诱饵,自己钓鱼,而不是依靠鱼的讲义。我的意思是,我自己的谷歌。好的,经过 48 小时在整个万维网上钓鱼,我得到了答案!
诀窍是在 Moodle Cloze 问题类型语法中使用“正则表达式简答题类型”语法。令人困惑?希望下面的链接和信息会让它更清楚:
- 您需要从这里下载并安装“正则表达式简答题类型”插件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 ")
表示这是一个 100% 的答案,价值 2 分。
确保您还下载并安装所需的行为更多插件在您的 moodle 安装中。这些插件是 2 个问题行为,位于:
https ://github.com/rezeau/moodle-qbehaviour_regexpadaptivewithhelp
和
https://github.com/rezeau/moodle-qbehaviour_regexpadaptivewithhelpnopenalty
或从 moodle 的插件存储库下载,位于http://moodle .org/plugins/browse.php?list=category&id=31
下载两者并安装到您的 /question/behaviour/ 文件夹。
为了在完形填空语法中使用“正则表达式简答题类型”语法(稍后会详细介绍),您需要复制 /question/type/multianswer 文件夹的 2 个被黑文件并覆盖。
您可以在以下位置阅读有关此关键步骤的信息:
http: //docs.moodle.org/25/en/question/type/regexp#The_RegExp_Short_Answer_Question
- 学习正则表达式!无法替代了解基础知识。我的意思是,在不了解规则和基本原理的情况下,如何期望在国际象棋、五人制足球或桥牌比赛中获胜?所以别再唠叨了,去谷歌搜索一下网络上最好的正则表达式资源吧。我用来完成这项工作的正则表达式资源分为三类。
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。 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
- 现在下到 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.
结果屏幕是这样的。
![一种简短的回答语法,已注入正则表达式类固醇以增强其功能。 是的,宝贝!](https://i.stack.imgur.com/hRzDc.jpg)
让我们把它分解成字母汤,现在好吗?
"~=students should have to (take|do|sit) exams"
意味着 Noodle,我的意思是 Moodle,将给以下任何一个输入奖励 2 个满分:
students should have to take exams
students should have to do exams
students should have to sit exams
"~%50%students should.*"
表示如果输入的前半部分包含不区分大小写的字符串“students should”,则 Moodle 的测验引擎将奖励 1 分(即 2 分的 50%)。所以像“students should goobbledegook”这样的输入会给你1分。
"~%50%.*(have to (take|do|sit) exams)$#Feedback for half credit answer"
意味着如果您输入一个句子结尾的字符串,您将获得 2 分中的 1 分:
“必须参加考试”或“必须参加考试”或“必须参加考试”。
美元符号 ($) 是这个正则表达式代码背后的大脑,它检测句子是否以该特定字符串值结尾。因此,输入以“Cruise 必须进行考试,宝贝!”结尾。不会匹配。只有像“Cruise 爬上迪拜塔,他们还要考试”这样的句子才真正符合。
所以你有它。我设法玩正则表达式游戏。将死我的正则表达式克星!在我的编程生涯中,你一直困扰着我。现在是时候打开你的桌子了,你这个正则表达式的怪物!我终于达到了对正则表达式的理解水平,足以让我编写和编写一个 Moodle 问题类型,其中包含一些人工的伪人工智能。
现在我已经回答了我自己的问题,是时候将这个 StackOverflow 帖子的分数从卑鄙的 -2 提高到 N 肯定了。加入你的选票,stackoverflow 地球人!
问候,弗兰基“我对这个正则表达式的东西简直要发疯了”锦赞美主!