删除字符串的一部分之后在Java中的正则表达式匹配(Remove part of String fo

2019-06-24 19:46发布

我想删除以下就是我的正则表达式匹配字符串的一部分。

我试图做一个电视节目的组织程序,我想切断在名称下面的形式SXXEXX其中X是一个数字季节和情节标记任何东西。

我抓住了正则表达式模式很容易制造 “[SS] \ d \ d [EE] \ d \ d” 应适当匹配。

我想使用的匹配器方法结束()得到本场比赛的字符串中的最后一个索引,但它似乎并没有被工作,我认为它应该。

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

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

如果有人能告诉我为什么,这并不工作,并提出了适当的方式做到这一点,那将是巨大的。 谢谢。

Answer 1:

matches()尝试将整个字符串再次模式相匹配。 如果你想找到一个字符串中的模式,使用find()find()将搜索字符串中的下一场比赛。

您的代码可能是相当一致的:

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


Answer 2:

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



Answer 3:

这应该工作

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

在Java中(我生锈),这将是

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();
} 

希望这可以帮助



文章来源: Remove part of String following regex match in Java