我需要做一些模式匹配与一个以上的模式作为输入在c#
本文关键字:模式 输入 一个以 模式匹配 | 更新日期: 2023-09-27 18:07:03
我需要做一些模式匹配来处理问题列表并提出一些语句将在解决方案列表的前面。每一个我需要匹配的问题第一句以"?"结尾。例如如果有以下字符串:
input="Which of the following can be aa ... zz?"
,然后我需要看看这是否匹配一些预定义的模式,如果它,然后我需要填充两个变量。在这个例子中,上面的字符串需要产生如下结果:
string1= "Can be aa ... zz:"
string2= "Cannot be contained aa ... zz:"
其中文本aa…源中的ZZZ出现在目标中。
Inputs:
1 - Which of the following can be aa ... zz?
2 - Which of the following are correct?
3 - What will result when aa ... zz?
4 - Which of the following is a aa ... zz?
5 - Which are aa ... zz?
6 - What can be said about aa ... zz:
7 - Which of the following is true?
8 - What will be the result when aa ... zz?
Output 1:
1 - Can be aa ... zz:
2 - Correct:
3 - The following will result::
4 - A aa ... zz
5 - The following are aa ... zz
6 - True statement(s)
7 - True statement(s)
8 - The following will result:
Output 2:
1 - Cannot be aa ... zz:
2 - Incorrect:
3 - The following will not result
4 - Not a aa ... zz:
5 - Are not aa ... zz:
6 - False statement(s)
7 - False statement(s)
8 - The following will not result
我认为我应该将输入模式和输出模式存储在参考数据类中,然后可能是链接和模式匹配的一些组合。
有人有什么建议吗?即使我能知道如何打一场比赛,那也很好。如果我有一个例子,然后我可以在更多的代码和工作。
什么样的模式?-图案是文本。例如,我想看看我的输入字符串是否以"下列哪一个可以是"开头,并以"?"结尾。
这些问题从何而来?-有限的问题。如果我不能得到匹配,那么我将在输出中输入"True"或"False"之类的内容。
可以像下面这样建模:
static Tuple<string,string> Match(string question)
{
//Do the matching and return the string,string tuple where first
//string is for output 1 and second for output 2.
}
static Tuple<List<string>,List<string>> GetOutput(List<string> questions)
{
var r = questions.Select(q => Match(q));
return new Tuple<List<string>,List<string>(r.Select(t => t.Item1).ToList(), r.Select(t => t.Item2).ToList());
}