java - 从包含文件名的字符串中提取模式

标签 java pattern-matching

我想从下面的字符串中提取 uid 后缀。我正在尝试模式。但找不到匹配项。

输入:exportDocumentInfo_29510309-5673-4c20-83bd-6d2303c21016-0.txt

uid:29510309-5673-4c20-83bd-6d2303c21016

后缀:0

public class Test {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("exportDocumentInfo_*-*.txt");
        String mydata = "exportDocumentInfo_29510309-5673-4c20-83bd-6d2303c21016-0.txt
";

        Matcher matcher = pattern.matcher(mydata);
        if(matcher.matches()) {
            System.out.println(matcher.group(1));
            System.out.println(matcher.group(2));
        }

    }

最佳答案

将每个 * 替换为 (.*)。另外,去掉 "; 之前的换行符,否则程序将无法编译。结果应该类似于这样:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(final String[] args) {
        final Pattern pattern = 
                Pattern.compile("exportDocumentInfo_(.*)-(.*).txt");
        final String mydata =
                "exportDocumentInfo_29510309-5673-4c20-83bd-6d2303c21016-0.txt";
        final Matcher matcher = pattern.matcher(mydata);

        if (matcher.matches()) {
            System.out.println(matcher.group(1));
            System.out.println(matcher.group(2));
        }
    }
}

Ideone example

关于java - 从包含文件名的字符串中提取模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57732978/

相关文章:

java - 我如何在 Java 中反转这种模式?

performance - Erlang 模式匹配性能

java - Spring Boot - 如何获取请求的基本 url

java - H2 嵌入模式 - DELETE 命令给出 COLUMN NOT FOUND 错误

java - Generic Map<String, Object> 使用 Moxy 进行 JSON 编码和解码

Haskell - 在模式匹配中使用常量

file - OOP 中处理不同文件类型的设计模式

java - 为什么我不能将 ArrayList<String> 用作通用 ArrayList<E> 方法的参数?

c++ - 匹配线段 - 稳健且快速的方式

mysql - MySQL 中两种模式匹配形式的区别