0

我不太擅长正则表达式..

我如何在这个正则表达式模式中添加“.tile”(不带引号):

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

提前致谢。

4

1 回答 1

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

但是,根据我对代码的理解(检查文件扩展名),这个正则表达式在几个方面存在缺陷:

  • 额外的,非文字的.(匹配任何东西,因此允许类似的东西xhtmy
  • 错误,xlt
  • 无需进行文件名检查。

因此,我推荐以下表达式:

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

公平地说,您不需要使用正则表达式。.您可以在最后一个元素上进行字符串拆分并测试。

无论哪种方式,我都鼓励你学习正则表达式

于 2012-06-08T22:28:10.437 回答