Заменить строку, исключив некоторые строки в Java - PullRequest
4 голосов
/ 30 августа 2010

Как заменить следующую строку в Java:

Sports videos (From 2002 To 2003) here.

TO

Sports videos 2002 2003 here.

Я использую код, но он удаляет всю строку, т. Е.
Я получаю этот вывод: Sports videos here.

String pattern= "\\((From)(?:\\s*\\d*\\s*)(To)(?:\\s*\\d*\\s*)\\)";

String testStr = "Sports videos (From 2002 To 2003) here.";

String testStrAfterRegex =  testStr.replaceFirst(pattern, "");

Чего здесь не хватает?

Спасибо

РАЗЛИЧНАЯ СТРОКА С ФОРМАТЕРОМ ДАТЫ

Если приведенная выше строка имеет форматирование даты, например (\\) или любой другой символ / слова, кроме цифры, ответ не будет работать

Я заменяю оригинальный ответ этим шаблоном, и он будет работать

String pattern= "\\((From)(.*)(To)(.*)\\)";

1 Ответ

3 голосов
/ 30 августа 2010

Изменить на

    String pattern= "\\((From)(\\s*\\d*\\s*)(To)(\\s*\\d*\\s*)\\)";
    String testStr = "Sports videos (From 2002 To 2003) here.";
    String testStrAfterRegex =  testStr.replaceFirst(pattern, "$2 $4");

Есть две проблемы:

Первая

Вы поместили (?:) в группы по годам,Это используется, чтобы не помнить эти группы.

Секунда

Вы не используете идентификаторы групп, такие как $ 1, $ 2.Я исправил, используя 2 и 4 доллара для 2-й и 4-й групп.


РЕДАКТИРОВАТЬ

Чистый раствор:

    String pattern= "\\(From(\\s*\\d*\\s*)To(\\s*\\d*\\s*)\\)";
    String testStr = "Sports videos (From 2002 To 2003) here.";
    String testStrAfterRegex =  testStr.replaceFirst(pattern, "$1$2");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...