我有一个问题,想知道如何解决。
我有一个从 pdf 文件中读入的字符串,其中包含问题列表。 其格式为:
QUESTION NO: 1
xxxxxxx (question text)
A) xxxx (multiple choice) B) xxxx C) xxxx ...
Answer: xxxxx
QUESTION NO: 2
xxxxxxx (question text)
.... (etc)
列表中约有 200 个问题。
我正在尝试使用正则表达式来分解文本,以便每个问题都可以位于单独的字符串中。
我以前曾使用 html 和 xml 文档完成过此操作,但它们很简单,因为有很多识别标记,如双引号、方括号和圆括号。
但我不知道如何仅使用文本来做到这一点。我尝试了很多组合,但似乎无法获得正确的格式:
var questionPattern = @"QUESTION NO:(.*)QUESTION NO:";
var questionMatch = Regex.Matches(pdfText, questionPattern, RegexOptions.Singleline);
我想知道有什么办法可以做到:
var questionPattern = @"(?<=QUESTION NO:)[^QUESTION NO:]*";
[^QUESTION NO:]*
在哪里读取每个问题标题后的所有内容,直到遇到下一个问题标题时停止?
显然这是错误的格式,但我希望人们能够理解我想要表达的意思。
任何帮助将不胜感激。
谢谢!
最佳答案
这可能是您能得到的最好结果 - 取决于答案。前瞻需要有条件,并且会破坏整个表达式。
(QUESTION NO: \d+[\S\s]*?Answer.*\n*)
关于C# 正则表达式 : How to break up plain text string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21200005/