以下是我正在使用的示例字符串:


  http://www.asfradio.com/device.asp?u=username&p=password&s=east


我在代码中使用的当前检查:

if (data.endsWith(".asf") || (0 < data.indexOf(".asf")))


所以在这种情况下我的检查失败了,因为是的,有一个.asf字符串,但是后面跟着收音机,这使我的逻辑不好,因为此链接不是asf类型...

我想要的是一个正则表达式,如果找到“ .asf”并且“ f”之后的下一个字符不是字母,则返回true。

希望它能引起人们的注意...

最佳答案

在Java的正则表达式引擎中,您有word boundary anchor \b

搜索\\.asf\\b。为了与String.matches()一起使用,您必须使用.*将其包装起来:

boolean found = inStr.matches(".*\\.asf\\b.*");


更好的是,将编译后的模式存储在一个常量中:

private static final Pattern PATTERN = Pattern.compile("\\.asf\\b");


并像这样使用它:

boolean found = PATTERN.matcher(inStr).find(); // not .matches()

关于java - 如何创建reg表达式来找到URL文件扩展名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6019908/

10-10 19:26