У меня есть пчела, пытающаяся создать синтаксический анализатор экзаменационной работы. Я изо всех сил пытаюсь создать регулярное выражение для захвата вопроса между двумя последовательными числами. Вот образец статьи: 21 (a) (i) ...

2
Ace Rimmer 12 Янв 2021 в 17:42

1 ответ

Лучший ответ

Ты можешь использовать

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

См. демонстрацию регулярных выражений.

< EM> Подробнее :

  • ^ - начало строки
  • (\d+) - группа 1: одна или несколько цифр
  • - пробел (вы можете добавить + после пробела, но это необходимо только в том случае, если вам нужно убедиться, что после него стоит ()
  • (.*(?:\r?\n(?!\d+ +\([a-z]+\)).*)*) - Группа 1:
    • .* - остальная часть строки
    • (?:\r?\n(?!\d+ +\([a-z]+\)).*)* - ноль или более строк, которые не начинаются с
      • \d+ - одна или несколько цифр
      • + - один или несколько пробелов
      • \([a-z]+\) - (, затем одна или несколько строчных букв ASCII, затем ).
1
Wiktor Stribiżew 12 Янв 2021 в 15:19