Как использовать регулярное выражение, чтобы найти определенную строку B после определенной строки A в нескольких строках, разделенных «\ n»

1

У меня есть текст, хранящийся в строке из файла pdf. И есть около 30 строк, разделенных "\n". И я использую регулярное выражение в java, чтобы найти подстроку за другой строкой. Но эти две строки не находятся в одной строке.

Например, текст выглядит следующим образом:

Title
content1
the percentage is 23%
This is a test. Test A
the percentage is 80%
content2

Мне нужно получить все проценты, которые после "This is a test", в этом случае 80%.

Я использовал regex: (?<=This is a test.)\\d*\\d\\%

Но похоже, что он только смотрит в строку "This is a test. Test A", ничто после этого.

Я знаю, что могу использовать раскол, но в реальном случае мне может понадобиться расколоть несколько раз, и это будет компрометировать существующую технологию, которую я имею прямо сейчас. Попытка выполнить его с использованием чистого регулярного выражения. Пожалуйста, дайте мне совет.

  • 0
    Попробуйте это (This is a test).*\\n*.*\\d{1,2}\%
Теги:

1 ответ

1
Лучший ответ
This is a test[\s\S]*?(\d+%)

Попробуйте this.Grab захвата или group.See демо.

https://regex101.com/r/pM9yO9/11

Для использования java

This is a test[\\s\\S]*?(\\d+%)
  • 0
    Это работает, за исключением того, что вывод идет с «Это тест». Как вы думаете, я могу избавиться от этой части просто с помощью регулярных выражений?
  • 0
    @CharlieZeng вы должны захватить группу. Match.group. Это даст только процент. Group (1)
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню