Удалить часть строки после соответствия регулярному выражению в Java

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

Я пытаюсь составить программу организации телешоу и хочу вырезать что-либо из имени после маркера сезона и эпизода в форме SXXEXX, где X - цифра.

Я довольно легко понял модель регулярных выражений, чтобы создать «[Ss] \ d \ d [Ee] \ d \ d» ». который должен соответствовать должным образом.

Я хочу использовать метод Matcher end (), чтобы получить последний индекс в строке совпадения, но, похоже, он не работает так, как мне кажется.

Pattern p = Pattern.compile("[Ss]\\d\\d[Ee]\\d\\d");
Matcher m = p.matcher(name);

if(m.matches())
    return name.substring(0, m.end());

Если бы кто-то мог сказать мне, почему это не сработало, и предложить правильный способ сделать это, это было бы здорово. Благодарю.

Ответы на вопрос(3)

Это должно сработать

.*[Ss]\d\d[Ee]\d\d

В Яве (я ржавый) это будет

String ResultString = null;

Pattern regex = Pattern.compile(".*[Ss]\\d\\d[Ee]\\d\\d");
Matcher regexMatcher = regex.matcher("Title S11E11Blah");
if (regexMatcher.find()) {
    ResultString = regexMatcher.group();
} 

Надеюсь это поможе

matches() снова пытается сопоставить всю строку с шаблоном. Если вы хотите найти свой шаблон в строке, используйтеfind(), find() будет искать следующее совпадение в строке.

Ваш код может быть таким же:

if(m.find())
    return name.substring(0, m.end());

matches соответствует всей строке, попробуйтеfind()

Ты тоже можешь запечатлеть имя:

String name = "a movie S01E02 with some stuff";
Pattern p = Pattern.compile("(.*[Ss]\\d\\d[Ee]\\d\\d)");
Matcher m = p.matcher(name);

if (m.find())
    System.out.println(m.group());
else
    System.out.println("No match");

Будет захватывать и печатать:

фильм S01E02

ВАШ ОТВЕТ НА ВОПРОС