具有多个可能结尾的Java正则表达式

时间:2015-01-12 21:56:35

标签: java regex

我需要编写一个正则表达式,它将匹配具有txt,htm或html扩展名的文件名。我知道parens将字符组合在一起,并且括号允许一组中的一个字符匹配,所以我尝试组合这些方法,但它不起作用。要测试的字符串部分为[1]。 。*应该匹配任意数量的字符,然后是\\。将是点,然后我尝试组合括号和括号。

if (!Pattern.matches(".*\\.[(txt)(htm)(html)]", parts[1])) {
    System.err.println("501 Not Implemented: " + parts[1] + "\n");
}

2 个答案:

答案 0 :(得分:6)

应该是:

if (!Pattern.matches(".*?\\.(txt|html?)", parts[1])) {
    System.err.println("501 Not Implemented: " + parts[1] + "\n");
}
  • 字符类[...]
  • 中没有文字分组
  • matches方法假设为锚点,因此不需要^$

答案 1 :(得分:2)

试试以下正则表达式:

".*\\.(txt|html?)$"