2011-05-16 34 views
0

以下是我使用的樣本串:如何創建reg-expression來查找url文件擴展存在?

  http://www.asfradio.com/device.asp?u=username & P =密碼& S =東

當前檢查我的代碼中使用:

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

因此,在這種情況下,因爲是存在的.asf字符串,但它隨後廣播,這讓我邏輯不好的,因爲這L我檢查失敗墨不是asf類型...

我想要的是一個正則表達式,如果找到「.asf」並且「f」後面的下一個字符不是字母,則返回true。

希望它讓SENCE ...

+1

你是否看了Java的正則表達式的文件之前?你卡在哪裏? – 2011-05-16 15:53:52

回答

1

在Java中的正則表達式引擎,你有word boundary anchor\b

\\.asf\\b搜索。爲了使用與String.matches(),您將有.*把它包起來:

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

更好的是,編譯的模式存儲在一個常數:

而且使用它像這:

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

感謝您的回答!這正是我所看到的...... :) – Jona 2011-05-16 16:14:47

+0

非常歡迎您。當人們記得說謝謝時,我總是很高興。 :-) – 2011-05-16 16:16:10

0

使用單詞邊界\b

\.asf\b 

可能是你必須用Java一倍逃生。

2

檢查文件擴展名的最簡單方法是首先獲取路徑。 Java的URL類是你需要做的是:

URL url = new URL("http://blah.com......"); 

if (url.getPath().endsWith(".asf") { 

    // your code here 
} 
0

可能行

結束
.*\.asf$ 

沒有結束線

.*\.[^a-zA-Z].* 
0

下一個最好的檢查將是假設,該序列或者在字符串的末尾或者在中間的某個地方,然後是問號:

if (data.endsWith(".asf") || data.contains(".asf?")) 
0

這只是比賽時的.asf是在字符串的結束或向右?

Pattern.compile("\\.asf(\\?|$)")