使用正则表达式匹配多项选择?

时间:2013-06-27 19:10:11

标签: regex dreamweaver

如何从文本文档中提取多项选择题。每个问题都以数字和点开头

1. Any Text _____ Goes here, And end with ? Or . And also can contain another paragraph.
a) possible
b) use regex
c) not possible
d) I dont know

Ans: b

以上是问题的示例。文本文件包括一些填空和一些文章写作的东西,但我只想要选择问题部分直到Ans:...。所有问题都有答案a,b,c和d。

我在Dreamweaver中复制了我的文本,以便我可以使用正则表达式。

2 个答案:

答案 0 :(得分:1)

“1。任何文字_都在这里,最后是?或者。”

可以在正则表达式中转换为此内容:

    \d+\.[^\?\.]*[\?\.]

Regular expression image

这对你有用吗?这假设你在问题中没有任何问号或句号直到结束......但这也是你所暗示的那种。

编辑:既然你想要的答案而不只是问题本身,而你想要区分其他类型的问题,试试这个:

([ \t]*\d+\.[^\n]+\n(?:[ \t]*[a-zA-Z]\)[^\n]+\n)+[\s]*Ans:[^\n]*)

Regular expression image

Edit live on Debuggex

答案 1 :(得分:0)

描述

此表达式将:

  • 将整个问题捕获到第0组的答案
  • 将问题编号捕获到第1组
  • 将问题的文本捕获到第2组
  • 捕获第3组的可能答案块
  • 捕获第4组的答案值
  • 允许包括问号在内的所有标点符号

^(\d+)\.\s*(.*?)[\r\n\s]+(^a\).*?)[\r\n\s]+Ans:\s+([a-z]+\b)

enter image description here

实施例

请参阅此处了解工作示例:http://www.rubular.com/r/RQoobTedtg

示例文字

12. Any Text _ Goes here, And end with ? Or . And also can contain another paragraph.
a) Q1 possible
b) Q1 use regex
c) Q1 not possible
d) Q1 i dont know

Ans: a

Do you like kittens or other random text?

24. Second question is here
a) Q2 possible
b) Q2 use regex
c) Q2 not possible
d) Q2 i dont know

Ans: b

<强>匹配

Match 1
1.  12
2.  Any Text _ Goes here, And end with ? Or . And also can contain another paragraph.
3.  a) Q1 possible
    b) Q1 use regex
    c) Q1 not possible
    d) Q1 i dont know
4.  a

Match 2
1.  24
2.  Second question is here
3.  a) Q2 possible
    b) Q2 use regex
    c) Q2 not possible
    d) Q2 i dont know
4.  b

注释

这个正则表达式确实假设每个问题最后都有一个Ans: x