html word试卷 c#怎么用正则表达式按学科拆分成题目、答案、解析
时间: 2023-11-26 14:03:01 浏览: 81
你可以使用 C# 的正则表达式来按照学科拆分试卷中的题目、答案和解析。以下是一个示例代码:
```csharp
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string html = "<html><body><div><h2>数学</h2><p>1. 2+2=4</p><p>答案:A</p><p>解析:略</p><p>2. 3+3=6</p><p>答案:B</p><p>解析:略</p></div><div><h2>语文</h2><p>1. 中国的首都是哪里?</p><p>答案:B</p><p>解析:北京是中国的首都。</p><p>2. 人类的本质是什么?</p><p>答案:C</p><p>解析:略</p></div></body></html>";
// 定义正则表达式
Regex subjectRegex = new Regex(@"<h2>(.*?)<\/h2>");
Regex questionRegex = new Regex(@"<p>(\d+)\.(.*?)<\/p>");
Regex answerRegex = new Regex(@"<p>答案:(.*?)<\/p>");
Regex analysisRegex = new Regex(@"<p>解析:(.*?)<\/p>");
// 匹配学科
MatchCollection subjectMatches = subjectRegex.Matches(html);
foreach (Match subjectMatch in subjectMatches)
{
string subject = subjectMatch.Groups[1].Value;
Console.WriteLine("学科:" + subject);
// 匹配题目、答案和解析
MatchCollection questionMatches = questionRegex.Matches(subjectMatch.NextMatch().Value);
MatchCollection answerMatches = answerRegex.Matches(subjectMatch.NextMatch().Value);
MatchCollection analysisMatches = analysisRegex.Matches(subjectMatch.NextMatch().Value);
for (int i = 0; i < questionMatches.Count; i++)
{
string questionNumber = questionMatches[i].Groups[1].Value;
string questionContent = questionMatches[i].Groups[2].Value;
string answer = answerMatches[i].Groups[1].Value;
string analysis = analysisMatches[i].Groups[1].Value;
Console.WriteLine("题目" + questionNumber + ":" + questionContent);
Console.WriteLine("答案:" + answer);
Console.WriteLine("解析:" + analysis);
}
}
}
}
```
在这个示例代码中,我们使用了四个正则表达式来匹配试卷中的内容。首先,我们使用 `subjectRegex` 匹配学科标题;然后,我们使用 `questionRegex` 匹配题目内容和编号;接着,我们使用 `answerRegex` 匹配答案;最后,我们使用 `analysisRegex` 匹配解析。通过遍历匹配结果,我们可以将试卷中的内容拆分成题目、答案和解析,然后按照学科进行分类输出。
阅读全文