2012-06-08 15 views
0

我不是在正則表達式非常好的..正則表達式的變化

如何將添加一個「.tile」(不帶引號),這個正則表達式模式:

private static final Pattern JSP_PathPattern = Pattern.compile("(.+\\/)(\\w+)(\\.(jsp|.?htm.?|.?xslt,.?xsl))$", Pattern.CASE_INSENSITIVE); 

在此先感謝。

+1

[你有什麼試過?](http://whathaveyoutried.com) – 2012-06-08 22:27:21

回答

4
private static final Pattern JSP_PathPattern = Pattern.compile("(.+\\/)(\\w+)(\\.(jsp|.?htm.?|.?xslt,.?xsl|tile))$", Pattern.CASE_INSENSITIVE); 

但是,從我的(檢查的文件擴展名)代碼的理解,這正則表達式是有缺陷的在幾個方面:

  • 外,非文字.(比賽什麼,從而使諸如xhtmy
  • Errant , for xlt
  • 無需進行文件名檢查。

因此,我建議如下表達:

private static final Pattern JSP_PathPattern = Pattern.compile("(\\.(jsp|html?|xslt?|tile))$", Pattern.CASE_INSENSITIVE); 

爲了公平起見,你並不需要使用正則表達式。你可以在.上分割字符串並測試最後一個元素。

無論哪種方式,我鼓勵你learn Regular Expressions