我有以下字符串:
http://xxx/Content/SiteFiles/30/32531a5d-b0b1-4a8b-9029-b48f0eb40a34/05%20%20LEISURE.mp3?&mydownloads=true
如何提取
30/
之后的部分?在这种情况下,它是32531a5d-b0b1-4a8b-9029-b48f0eb40a34
。我还有另一个字符串,该字符串的相同部分最多为30/,此后每个字符串都具有不同的ID,直到我想要的下一个/。 最佳答案
在这种情况下,split
类的String
函数将对您无济于事,因为它会丢弃定界符,而这并不是我们想要的。您需要制作一个向后看的图案。 synatax的外观为:
(?<=X)Y
标识任何以
Y
开头的X
。因此,在这种情况下,您需要以下模式:
(?<=30/).*
编译模式,将其与您的输入进行匹配,找到匹配项并加以捕获:
String input = "http://xxx/Content/SiteFiles/30/32531a5d-b0b1-4a8b-9029-b48f0eb40a34/05%20%20LEISURE.mp3?&mydownloads=true";
Matcher matcher = Pattern.compile("(?<=30/).*").matcher(input);
matcher.find();
System.out.println(matcher.group());
关于java - 在特定模式后提取子字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10908316/