我有这个字符串
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);
[^/]+
子模式匹配除 /
之外的 1 个或多个字符。由于您想要保留的部分是已知的,因此您不需要使用捕获组,只需在替换字符串中使用文字即可。
这里是获取您所寻求的结果的子字符串方式(为了完整性,基于 FETCH /Students/
是字符串的已知开头的假设,然后跟随由除 /
以外的字符组成的一些子字符串,直到然后 /
加上您需要保留的其余字符串):
String s1 = "FETCH /Students/Mark/School";
String endPart = s1.substring(s1.indexOf("/", 17));
System.out.println(s1.substring(0, 15) + endPart);
关于java - 如何获取模式匹配后的子字符串?并从初始字符串中删除找到的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33086681/