Нужна помощь в RegEx, чтобы что-нибудь захватить после обязательного значения

Обновить

April 2019

Просмотры

33 раз

1

У меня есть текст , в котором мне нужно , чтобы захватить данные и разделить его. Мне нужно найти «частоту отзыва» в рамках большой группы текста, то , как только что нашел, взять все после него и остановится на «)».
Пример текста:

No. of components Variable
Review frequency Quarterly (Mar., Jun., Sep., Dec.)
Quick facts
To learn more about the

Что мне нужно «Quarterly» и «март,, сентябрь, декабрь июня»

Мое текущее регулярное выражение:

((?=.*?\bReview frequency\b)(\b(Q|q)uarterly|(A|a)nnually|(S|s)emi-(A|a)nnually))

Но это не работает. По существу, «частота Review» должна быть спецификатор, прежде чем мы начнем подбирая другую информацию, так как могут быть другие даты / периоды внутри файла. Спасибо!

1 ответы

1

You are not matching the rest of the data on the line.

I suggest using:

(?m)^Review frequency[ \t]+(\w+)[ \t]+(.+)

See the regex demo

If the first capturing group can only contain 3 words as indicated in your pattern, use

(?m)^Review frequency[ \t]+([Qq]uarterly|(?:[Ss]emi-)?[Aa]nnually)[ \t]+(.*)

See another regex demo

Use these patterns with re.findall:

import re
regex = r"(?m)^Review frequency[ \t]+([Qq]uarterly|(?:[Ss]emi-)?[Aa]nnually)[ \t]+(.*)"
test = "No. of components Variable\nReview frequency Quarterly (Mar., Jun., Sep., Dec.\nQuick facts\nTo learn more about the"
print(re.findall(regex, test))