我认为正则表达式可以通过对输入进行标记来帮助您完成任务。要组装输出,您将需要一些额外的编程。
我想出的正则表达式是:
<[^>]+>(?:(\w+): )?([^<]*)<\/[^>]+>
这将产生一个匹配列表,例如:
[
["id", "1"],
["type", "MCQ"],
["question", "Which app does Alice install with Simm's help?"],
["options", ""],
["", "Angry birds game"],
["", "Email app"],
["", "Chrome browser"],
["", "News reader"],
["answer", "Angry birds game "]
]
确切的输出将取决于您使用的正则表达式实现,但这就是您将拥有的匹配的要点。
要组装输出,您需要逐一考虑每个匹配项。如果您看到诸如
["options", ""]
之类的匹配项,那么您就知道这会启动一个列表,因为第二组是空字符串。当看到 ["", "Angry birds game"]
时你就知道这一定是一个列表项,因为第一组是空字符串。最后,当您看到 ["answer", "Angry birds game "]
时,您知道列表一定已经结束,因为两个组都非空。这是您需要做的一些额外的编程工作。