Как сопоставить регулярное выражение со словами и датой? - PullRequest
1 голос
/ 24 января 2020

Я хотел бы написать регулярное выражение для сопоставления предложений, подобных этим:

"I rated Minions (2015)..."
"I rated Beauty and the Beast (2015)..."

Я пробовал регулярное выражение типа:

I rated \\w+ \\(\\b(18|19|20)\\d{2}\\b\\)

, но оно работает только в первом случай, когда заголовок представляет собой одно слово.

Между "Я оценил" и годом есть заголовок mov ie без фиксированной длины. Не могли бы вы помочь мне?

Ответы [ 2 ]

1 голос
/ 24 января 2020

Попробуйте использовать регулярные выражения, например

\[^.?!(]* \\((18|19|20)\\d{2}\\)\

ИЛИ

\\w+ (?:\\w+ )*\\((?:1[89]|20)\\d{2}\\)
0 голосов
/ 24 января 2020

Предполагая, что:

  • вам не нужно действительно проверять год
  • ваш текст содержит смешные ложные предложения, в отличие от однострочного «Я оценил ...»
  • Вы хотите что-то сделать с заголовком mov ie и годом отдельно

Вы можете использовать:

String text = "I rated Minions (2015)... I like turtles. "
    + "I rated Beauty and the Beast (2015)... "
    + "I rated rare live footage of Louis XVI being beheaded (1789)";

//                                 | starts with "I rated"
//                                 |       | group 1 with the title
//                                 |       |     | open parenthesis
//                                 |       |     |  | group 2 with non-validated year
//                                 |       |     |  |     | closing parenthesis
//                                 |       |     |  |     | 
Pattern pattern = Pattern.compile("I rated (.+?) \\((\\d+)\\)");

Matcher matcher = pattern.matcher(text);

while (matcher.find()) {
  System.out.printf(
      "Title: %s - Year: %s%n", 
      // title is back-referenced as group 1
      matcher.group(1), 
      // year is back-referenced as group 2
      matcher.group(2)
  );
}

... который вернет:

Title: Minions - Year: 2015
Title: Beauty and the Beast - Year: 2015
Title: rare live footage of Louis XVI being beheaded - Year: 1789
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...