我想删除以下就是我的正则表达式匹配字符串的一部分。
我试图做一个电视节目的组织程序,我想切断在名称下面的形式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());
如果有人能告诉我为什么,这并不工作,并提出了适当的方式做到这一点,那将是巨大的。 谢谢。
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
这应该工作
.*[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();
}
希望这可以帮助