Получение заголовка текста с помощью регулярного выражения в Java - PullRequest
1 голос
/ 20 ноября 2011

Я пытаюсь определить нетерпеливое регулярное выражение, которое способно получить полный «заголовок» из простого текстового документа. Он должен начинаться с буквы (без учета регистра), может содержать до 5 слов, и каждое слово может содержать цифры. Он должен заканчиваться, когда найдены 2 пробела.

Я анализирую каждую строку за раз, и заголовок может начинаться в любом месте строки.

Пример:

11/20/2011      this is the 1st document title   written by:user
Hi,
This is a sample text which is not the title since it does not end with 2 spaces.

После анализа каждой строки только первая строка должна возвращать совпадение «это первый заголовок документа».

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 ноября 2011

Я бы не рекомендовал делать это, но если вам необходимо:

Pattern pattern = Pattern.compile("\\s(\\w+(?:\\s\\w+){0,5})\\s{2}", Pattern.MULTILINE);
Matcher match = pattern.matcher(text);

if (match.find())
    System.out.println(match.group(1));

Заменить if на while, если вам нужно найти больше заголовков в той же строке (здесь она называется текстом).Это находит заголовки с 1-6 словами, так как ваш заголовок состоит из 6 слов (не 5), как FailedDev, упомянутый в комментариях.

Как я уже упоминал в комментарии, и Эрик Ларссон повторил, это будет намного быстреечитать строку за строкой и привязывать соответствие к началу строки.

0 голосов
/ 20 ноября 2011

Проверьте, начинается ли строка с даты, и если да, то прочитайте строку отверстия

Вот регулярное выражение для чтения, если строка начинается с даты: ^([0-9]{2}/[0-9]{2}/[0-9]{4})(.*?)\n

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...