Java 模式匹配后如何获取子字符串?并从初始字符串中删除找到的子字符串

Java 模式匹配后如何获取子字符串?并从初始字符串中删除找到的子字符串,java,regex,substring,Java,Regex,Substring,我有这根绳子 String s1 = "FETCH /Students/Mark/School"; 我有这样的模式: String pattern = "FETCH /Students/.+?/School"; 在匹配之后,我需要从该字符串中取出“Mark”。可能吗 已解决:getSubString,使用此模式“FETCH/Students/(.+?)/School” 您可以使用一个简单的replaceAll来获得您想要的: String s1 = "FETCH /Students/Mark

我有这根绳子

String s1 = "FETCH /Students/Mark/School";
我有这样的模式:

String pattern = "FETCH /Students/.+?/School";
在匹配之后,我需要从该字符串中取出
“Mark”
。可能吗


已解决:getSubString,使用此模式“FETCH/Students/(.+?)/School”

您可以使用一个简单的
replaceAll
来获得您想要的:

String s1 = "FETCH /Students/Mark/School";
s1 = s1.replaceAll("FETCH /Students/[^/]+/School", "FETCH /Students/School");
System.out.println(s1);

[^/]+
子模式与
/
以外的一个或多个字符匹配。由于要保留的部分是已知的,因此不需要使用捕获组,只需在替换字符串中使用文本即可

下面是一种获得所需结果的子字符串方法(为了完整性,假设
FETCH/Students/
是字符串的已知开头,然后跟随由
/
以外的字符组成的子字符串,直到
/
加上需要保留的字符串的其余部分):


参见
String pattern=“FECTH/Students/(.+?)/School”并使用捕获的组#1
“FETCH/Students/(.+?)/School”
matcher.group(1)
-你在
FETCH
@NoobCoder中也有一个打字错误,请发布你正在寻找的结果。@stribizev似乎你是对的:)@NoobCoder-right,但是,编辑问题而不是评论——评论应该是暂时的——问题本身应该是独立的,并且本身是清楚的
String s1 = "FETCH /Students/Mark/School";
String endPart = s1.substring(s1.indexOf("/", 17));
System.out.println(s1.substring(0, 15) + endPart);