我有以下字符串:

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/

10-11 22:25
查看更多