#regex
#регулярное выражение
Вопрос:
Текст:
ITEM 1A. RISK FACTORS
The following is a description of the principal risks inherent in our business.
ITEM 1B. UNRESOLVED STAFF COMMENTS
Not Applicable.
Регулярное выражение:
(?<=RISK).*
Понял это:
ITEM 1A. RISK **FACTORS**
The following is a description of the principal risks inherent in our business.
ITEM 1B. UNRESOLVED STAFF COMMENTS
Not Applicable.
Ожидаемый:
ITEM 1A. RISK **FACTORS
The following is a description of the principal risks inherent in our business.
ITEM 1B. UNRESOLVED STAFF COMMENTS
Not Applicable.**
Как я могу получить весь текст после слова RISK и перед словом ITEM 1B
Комментарии:
1. Я думаю, вам нужен
s
модификатор, позволяющий.
соответствовать новой строке.
Ответ №1:
Должен работать следующий шаблон:
(?<=RISK)(.*?)(?=ITEM 1B)
Обратите внимание, что в приведенной ниже демонстрации я использую режим DOT ALL. Это означает, что .*
может совпадать по символам новой строки, что является поведением, которое вы хотите здесь.
ДЕМОНСТРАЦИЯ
Если вы по какой-либо причине не можете использовать поисковые системы, мы все равно сможем продолжить, предполагая, что ваш инструмент регулярных выражений поддерживает группы захвата.
Если ваш вариант регулярного выражения не поддерживает DOT ALL, то одним из возможных обходных путей является использование [sS]*
:
(?<=RISK)([sS]*?)(?=ITEM 1B)
Ответ №2:
Вы можете сделать это, для чего не требуется использовать модификатор регулярного выражения s
(точка во всех):
(?<=RISK)([Ww]*)(?=ITEM 1B)
Демонстрация здесь:https://regex101.com/r/ZUKZxy/4