我需要解析值超出文本看起来像这样的:使用RegEx解析文本?
Description. Question?
A. First Answer
B. Second Answer
C. Third Answer
Answer: A, B
现在我需要找出描述的问题,问题的答案,这答案是正确的。 RegEx有可能吗?我知道这应该是可能的,但我不是RegEx Expert。
我需要解析值超出文本看起来像这样的:使用RegEx解析文本?
Description. Question?
A. First Answer
B. Second Answer
C. Third Answer
Answer: A, B
现在我需要找出描述的问题,问题的答案,这答案是正确的。 RegEx有可能吗?我知道这应该是可能的,但我不是RegEx Expert。
认真的Regex是伟大的,但一旦解析逻辑变得先进,正则表达式也需要解决这个问题。我建议把逻辑分成小块(我认为你有某种脚本语言可用来做一些预处理?)
即使你得到了与一个杀手正则表达式匹配的整个事情 - 稍后改变它(由你或者其他一些抱歉的人)会是一种痛苦。
我会配合这样的答案(你需要剥离逗号):
^Answer: (\w,?)+
然后我会做的逻辑来重新分析和与第一正则表达式找到答案文本,像这样的东西(重建了比赛,在这种情况下,A是一个答案):
^A\.\s(.*)
这也许不是什么与闪烁你的朋友,但它会更容易维护,而且赫克容易得多了解。
几乎任何你可能想要用正则表达式解析文本都可能想做的事情,但你必须投入一些时间来学习它。你的特定任务有多棘手取决于你的文本体是如何一致的。所以简而言之,是的,但不要问我的Reg Ex!祝你好运。
”投入一些时间来学习它虽然“,唯一的问题是,我没有时间;) –
如果你可以对你的例子更具体,并显示一个实际的问题和描述,它会更容易说清楚,但如果我正在阅读这个权利,你可以找到所有的文本到最后一个句号“ “。在问号“?”之前,然后找到问号后面的文字,直到问号“?”,最后使用满员的字母“。”。之后他们的权利,所以像这样的伪:
lastFullStopBeforeQ = text.substring(0至第一个问题 标记).lastIndexOf
说明= text.substring(0至lastFullStopBeforeQ)( “”)
问题= text.substring(lastFullStopBeforeQ + 1到第一个问题 标记)
答案[0] = text.substring(第一问号+ 1到下一个 “\ n”)...
个CorrectAnswers [0] = text.substring(旁边指数 “答:” 到明年 “”)...
我知道这是可能使用C#,如果你用别的话我可以给你一个明确的答案。 “
”^ A \。\ s(。*)“效果很好,谢谢!但我有一个问题。我有一些答案与换行符。我如何匹配整个答案而不匹配下一个答案? –
哦,“^ A \。\ s([^ B] *)”这个工作! –
啊,不,它不... –