正则表达式改变

时间:2012-06-08 22:25:09

标签: java regex

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

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

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

提前感谢。

1 个答案:

答案 0 :(得分: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);

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

不管怎样,我鼓励你learn Regular Expressions