使用RegEx解析文本
本文关键字:文本 RegEx 使用 | 更新日期: 2023-09-27 18:15:36
我需要从文本中解析值,看起来像这样:
Description. Question?
A. First Answer
B. Second Answer
C. Third Answer
Answer: A, B
现在我需要找出描述,问题,答案和哪些答案是正确的。这是可能的RegEx吗?我知道这应该是可能的,但我不是一个RegEx专家。
说真的,Regex很棒,但是一旦解析逻辑变得高级,解决问题所需的Regex也会变得高级。我建议把逻辑分解成更小的部分(我认为你有某种脚本语言可用来做一些预处理?)
即使你用一个杀手级的正则表达式匹配了整个东西,以后(由你或其他遗憾的人)更改它也会很痛苦。
我会用这样的东西匹配答案(你需要去掉逗号):
^Answer: ('w,?)+
然后我做逻辑,用第一个正则表达式找到的答案重新解析文本,像这样(重建匹配,在这种情况下A是一个答案):
^A'.'s(.*)
这可能不是一个可以让你的朋友炫耀的东西,但它会更容易维护,而且更容易理解。
几乎任何你可能想做的文本解析都可以用正则表达式,但是你必须花一些时间来学习它。你的特定任务有多棘手取决于你的文本正文的一致性。所以简而言之,是的,但不要问我要Reg Ex!好运。
如果你能在你的例子中更具体一些,并显示一个实际的问题和描述,这将更容易确定,但如果我没看错的话,你可以找到所有的文本,直到问号"?"之前的最后一个句号".",然后找到它之后的文本,直到问号"?",最后在它们后面使用带句号"."的字母,所以像这样的pseudo:
lastFullStopBeforeQ = text。子字符串(0到第一个问题)马克).lastIndexOf("。")
Description = text。substring(0 to lastFullStopBeforeQ)
问题=文本。第一个问题的子字符串(lastFullStopBeforeQ+1)马克)
答案[0]= text。子字符串(第一个问号+1到下一个"'n")…
CorrectAnswers[0] = text。"Answer:"到next的下一个索引",") ...
我知道这是可能的使用c#,如果你使用其他的东西,那么我不能给你一个明确的答案。