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

标签 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/School";
s1 = s1.replaceAll("FETCH /Students/[^/]+/School", "FETCH /Students/School");
System.out.println(s1);

参见IDEONE demo

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

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

String s1 = "FETCH /Students/Mark/School";
String endPart = s1.substring(s1.indexOf("/", 17));
System.out.println(s1.substring(0, 15) + endPart);

参见another demo

关于java - 如何获取模式匹配后的子字符串?并从初始字符串中删除找到的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33086681/

相关文章:

python - 将html数据解析成python列表进行操作

php - 我如何在 PHP 中删除除打印字符以外的所有内容?

javascript - 如何多次捕获同一个捕获组?

sql-server - 如何在 SQL Server 字符串中查找和显示模式的所有实例?

c - 有效子串数算法

variables - 批处理脚本帮助 - 将 DelayedExpansion Var 的子字符串替换为另一个 DelayedExpansion Var

Java实现接口(interface)Comparable,将手动输入的数据与生成的数据进行比较

java - "The system cannot find the file C:\ProgramData\Oracle\Java\javapath\java.exe"

java - 如何在 Selenium Web 驱动程序中编写等待,直到下拉列表中的值被填充,然后单击按钮

java - 多源特定消息聚合和重定向到目的地的 Camel 模式