【问题标题】:Regex: do not match suffix containing substring正则表达式:不匹配包含子字符串的后缀
【发布时间】:2017-11-13 01:34:37
【问题描述】:

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

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

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

但我不想匹配:

  • my_file_name
  • my_file_name.123

我查找了负前瞻,但这似乎只有在我知道他的绝对后缀时才有效。我想我想要的是广告my_file 没有_ 作为紧随其后的字符。

如何表达上述正则表达式?感谢您的阅读。

【问题讨论】:

  • my_file(\.\d+)?
  • “我想我想要的是……” - 好吧,在你获得编程帮助之前,你需要确切地决定你想要的是什么。

标签: java regex negative-lookahead


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多