我需要从看起来像这样的文本中解析值:
Description. Question?
A. First Answer
B. Second Answer
C. Third Answer
Answer: A, B
现在我需要找出说明,问题,答案和哪些答案是正确的。这可能与RegEx有关吗?我知道它应该是可能的,但我不是RegEx专家。
答案 0 :(得分:3)
严重的是Regex很棒,但是一旦解析逻辑变得先进,解决问题所需的正则表达式也是如此。我建议将逻辑拆分成更小的部分(我认为你可以使用某种脚本语言进行一些预处理?)
即使你把整个东西与一个杀手正则表达式相匹配 - 稍后改变它(由你或其他一些对不起的人)也会很痛苦。
我会用这样的答案来匹配答案(你需要删除逗号):
^Answer: (\w,?)+
然后我会使用第一个正则表达式找到的答案重新解析文本的逻辑,就像这样(重建匹配,在这种情况下A是答案):
^A\.\s(.*)
这可能不是闪现朋友的东西,但它会更容易维护,而且更容易理解。
答案 1 :(得分:0)
使用正则表达式可以解决任何您可能想要解析文本的问题,但您必须花一些时间来学习它。您的特定任务有多棘手取决于您的文本主体的一致性。所以简而言之,是的,但不要问我的Reg Ex!祝你好运。
答案 2 :(得分:0)
如果你对你的例子更具体,并且显示一个实际的问题和描述,那么肯定会更容易说出来,但如果我正确地阅读,你可以找到所有文本到最后一个句号“。 “在问号“?”之前,然后在问号“?”之后找到文本,最后使用带有句号的字母“。”在他们之后,所以像这样伪:
lastFullStopBeforeQ = text.substring(0到第一个问题 标记).lastIndexOf( “”)
Description = text.substring(0 to lastFullStopBeforeQ)
问题= text.substring(lastFullStopBeforeQ + 1到第一个问题 标记)
答案[0] = text.substring(第一个问号+ 1到下一个“\ n”)......
CorrectAnswers [0] = text.substring(下一个“答案:”的下一个索引 “,”)......
我知道这可以使用C#,如果你使用其他东西,那么我无法给你一个明确的答案。