C# 如何多次在变量字符串和常量字符串之间获取字符串

C# 如何多次在变量字符串和常量字符串之间获取字符串,c#,regex,C#,Regex,我将RTF文件加载到RichTextBox变量中。此文件包含多项选择题。每个问题由三部分组成:提出问题的词干、正确的回答和四个不正确的备选回答 我正在为如何获得茎而挣扎,即问题本身。阀杆位于一个整数后接一个点(如1、2、3、4等)和第一个备选“a”之间。茎有多条线,包括断线 我不知道我正在阅读的文件中有多少问题。例如: 1. AAAAA AAAAA: A) 1 B) 2 C) 3 D) 4 E) 5 Answer: C Explanation: EEEEE 2. BBBBB BBBBB?

我将RTF文件加载到RichTextBox变量中。此文件包含多项选择题。每个问题由三部分组成:提出问题的词干、正确的回答和四个不正确的备选回答

我正在为如何获得茎而挣扎,即问题本身。阀杆位于一个整数后接一个点(如1、2、3、4等)和第一个备选“a”之间。茎有多条线,包括断线

我不知道我正在阅读的文件中有多少问题。例如:

1. AAAAA
AAAAA:

A) 1
B) 2
C) 3
D) 4
E) 5

Answer: C
Explanation: EEEEE

2. BBBBB

BBBBB?

A) yyy
B) xxx
C) zzz
D) kkk
E) jjj

Answer: A
Explanation: TTTTTTT
我创建了一个名为“问题”的类:


我一直在寻找并努力学习正则表达式。我还使用了许多不同的正则表达式来获取词干,但都没有成功,例如:(?=A))(.\n)+(?=\d.)(?获取这3个部分的一个选项:词干、问题和第一个备选方案A,是使用3个捕获组

^(\d+\. .*)\r?\n((?:(?![A-Z]\)).*\r?\n)*)\r?\n\s*([A-Z]\).*)
那会匹配的

  • ^
    字符串的开头
  • (\d+\..*)
    捕获组1,匹配1+个数字、一个点、空格和行的其余部分
  • \r?\n
    匹配换行符
  • 捕获第2组
    • (?:(?![A-Z]\)..\r?\n)*
      匹配所有不以大写字符A-Z开头,后跟
      )的行。
  • 关闭第2组
  • \r?\n\s*
    匹配换行符和0+空格字符
  • 捕获第三组
    • [A-Z]\).
      匹配字符A-Z和
      ,后跟行的其余部分
  • 关闭第3组

(点击表格选项卡)

第四只鸟,非常感谢。你的正则表达式太棒了。但有可能不获得第一个备选方案A吗?我只需要抓住茎。所以我编辑了你的正则表达式来删除组3:(\d+\..*)\r?\n((?:(![A-Z])).\r?\n)*)\r?\n\s*@polarbear你是说像这样有两个捕获组吗?还是像这样只配一根火柴?中的正则表达式正在运行。非常感谢。
question[1].steam = "BBBBB BBBBB?"
question[1].alternatives = {'1', '2', '3', '4', '5'}
question[1].answer = 'C'
question[1].explanation = "EEEEE"

question[2].steam = "AAAAA AAAAA:"
question[2].alternatives = {'xxx', 'yyy', 'zzz', 'kkk', 'jjj'}
question[2].answer = 'A'
question[2].explanation = "TTTTTTT"
^(\d+\. .*)\r?\n((?:(?![A-Z]\)).*\r?\n)*)\r?\n\s*([A-Z]\).*)