java - 正则表达式在 Ruby 中匹配,但在 Java 中不匹配?

标签 java regex

只是为了获得更多使用正则表达式的经验(同时也让工作生活更轻松),我尝试用 Java 解析一些文件名。

我的字符串是这样的:/home/user/example/Results/ExampleFilePrefix_20140324-0500_OptionalTextThatMightContainNumbers123.csv

基本上,文件名始终以 ExampleFilePrefix_ 开头,后跟时间戳,有时以 OptionalTextThatMightContainNumbers123 结尾,具体取决于文件的生成方式。我想要的相关信息是时间戳,后跟可选文本(如果存在)。

我正在摆弄各种正则表达式,虽然我可以让它们全部与 Ruby 正则表达式解析器一起工作,但我无法让它们在 Java 中工作。我没有跟踪它们,但这是我最近的尝试:

_(\w+-\w+)

在 Ruby 中按预期工作:http://rubular.com/r/K2BiboURRo ,但甚至与 Java 中的匹配还差得很远: http://fiddle.re/c7m04

由于在线解析器不匹配,我认为我编写的代码没有问题,但我会将其粘贴到此处以确保确定。

private String extractFileName(String filename) {
    String resultNameBase = "RegexDidntMatch";
    Pattern pattern = Pattern.compile("_(\\w+-\\w+)", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(filename);
    if (matcher.matches() && matcher.find()) {
        resultNameBase = matcher.group(1);
    }
    return resultNameBase;
}

一如既往,提前感谢大家

最佳答案

其唯一的第一个 matcher.find() 并捕获组 0 而不是 1

if (matcher.find()) {
    resultNameBase = matcher.group();
}

关于java - 正则表达式在 Ruby 中匹配,但在 Java 中不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22696821/

相关文章:

java - 如何使用 RecyclerView 显示空 View ?

java - 尝试通过 Eclipse 连接到 Sql 服务器(我认为找不到驱动程序)

java - Cassandra 中未排序的 map 类型

Java非常简单的正则表达式谜题

regex - 如何匹配包含unicode字符的完整字符串?

c# - 如何获得两个边界之间的正则表达式匹配

java - 重写 equals 方法时如何指定两个对象?

java - ".ant does not exist"构建 Aibu 时出错

javascript - 用特定的单词替换每个单词javascript正则表达式

java - 正则表达式匹配android java中的数字