模式匹配后如何获取子串?并从Initial String中删除找到的subString

时间:2015-10-12 17:11:33

标签: java regex substring

我有这个字符串

String s1 = "FETCH /Students/Mark/School";

我有这种模式:

String pattern = "FETCH /Students/.+?/School";

在匹配之后,我需要从该字符串中获取"Mark"。有可能吗?

求助:getSubString,使用这种模式“FETCH / Students /(.+?)/ School”;

1 个答案:

答案 0 :(得分:1)

您可以使用简单的replaceAll来获得您想要的内容:

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

请参阅IDEONE demo

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

这是获取所搜索结果的子字符串方式(为了完整性,基于FETCH /Students/是字符串的已知开头的假设,然后跟随一些由{{1以外的字符组成的子字符串组成的子字符串然后到/加上你需要保留的其余字符串):

/

请参阅another demo