Я пытаюсь использовать регулярные выражения Java для соответствия шаблону, который занимает несколько строк. У шаблона есть одна строка, которая начинается с «A», за которой следуют ровно 50 символов, а затем одна или несколько строк, начинающихся с «B», за которыми следуют ровно 50 символов:
A... // exactly 50 chars after the A
B...
B...
Регулярные выражения Java, похоже, не поддерживают это.
Вот регулярное выражение, которое работает для одной строки A и одной строки B:
A.{50}[\\n[\\n\\r]]B.{50}[\\n[\\n\\r]]
Вот то же регулярное выражение, измененное для поиска одной или нескольких строк B:
A.{50}[\\n[\\n\\r]][B.{50}[\\n[\\n\\r]]]+
Однако это регулярное выражение находит только первый символ B в первой строке B.
Я использую [\\n[\\r\\n]]
для работы с переводами DOS и UNIX. Включение режима MULTILINE не влияет на результаты.
Проблема, похоже, заключается в том, что я использую скобки с '+', чтобы превратить регулярное выражение для строки B в класс символов, который может захватывать несколько строк.
Есть ли что-то в регулярных выражениях Java, которые не допускают '.' символ или фигурные скобки для указания точной длины строки?