正则表达式:不匹配包含子字符串的后缀

时间:2017-11-13 01:34:38

标签: java regex negative-lookahead

这是另一个正则表达式问题。我无法找到满足我需求的任何stackoverflow问题。

我正在使用java。我需要一个正则表达式来匹配以下文件:

  • my_file
  • my_file.123(基本上是my_file\.(\d+)

但我不想匹配:

  • my_file_name
  • my_file_name.123

我查找了负面的预测,但这似乎只有在我知道他的绝对后缀时才有用。我认为我想要的是广告my_file,其中_不是后续字符。

我如何表达上述正则表达式?谢谢你的阅读。

1 个答案:

答案 0 :(得分:1)

您只需要匹配my_file(以及可选文字.后跟数字)。像,

String[] arr = { "my_file", "my_file.123", "my_file_name", "my_file_name.123" };
String regex = "my_file(\\.\\d+)?";
for (String str : arr) {
    System.out.printf("%s %s%n", str, str.matches(regex));
}

输出(根据要求)

my_file true
my_file.123 true
my_file_name false
my_file_name.123 false