Java正则表达式合并:匹配excludethis后至后续/前内容
合并正则一步提取目标内容
当然可以把这两步正则合并成一个,直接拿到你想要的excludethis之后、下一个/之前的内容!
问题分析
你原来的思路是先匹配到123456/,再通过第二个正则去掉末尾的/,其实我们可以直接调整正则逻辑,让它只匹配到/之前的部分,省去后续处理步骤。
合并后的正则表达式
Pattern p = Pattern.compile("(?<=.com\\/excludethis)[^\\/]+");
正则规则解释
(?<=.com\/excludethis):这是正向肯定预查,用来精准定位到.com/excludethis字符串的末尾,确保我们提取的内容是在它之后的区域。[^\/]+:匹配一个或多个非/的字符,遇到第一个/就会停止匹配,正好拿到你需要的123456。
修改后的完整代码
String stringToSearch = "https://example.com/excludethis123456/moretext"; Pattern p = Pattern.compile("(?<=.com\\/excludethis)[^\\/]+"); Matcher m = p.matcher(stringToSearch); if (m.find()) { String theGroup = m.group(0); System.out.format("'%s'\n", theGroup); // 直接输出 '123456' }
这样就不需要再用第二个正则处理临时字符串了,一步到位完成目标内容的提取。
内容的提问来源于stack exchange,提问作者cheshire
相关产品推荐
相关产品推荐

