2013-06-27 4 views
0

Как извлечь вопрос из нескольких вариантов из текстового документа. Каждый вопрос начинается с цифры и точкиИспользование регулярного выражения для соответствия множественному выбору?

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, чтобы использовать регулярное выражение.

ответ

1

«1. Любой текст _ Идет здесь, И заканчивается? Или».

может перевести это в регулярное выражение:

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

Regular expression image

ли эту работу для вас? Это предполагает, что у вас никогда не будет вопросительных знаков или периодов в вопросе до конца ... но это то, что вы подразумевали.

Edit: Так как вы хотите, чтобы ответы и не только сам вопрос, и вы хотите, чтобы различать между другими типами вопросов, попробуйте следующее:

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

Regular expression image

Edit live on Debuggex

+0

Большое спасибо за ответ, а как насчет средней части a) ... b) ... c) ... d) ... И Ans: .. – User707

+0

Как вы можете нарисовать диаграмму stat как это? – User707

+0

Проблема в том, что если вы добавите случайный текст между двумя вопросами, он также выберет случайный текст. – User707

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 в конце.