您好我在获取字符串的第三个元素时遇到问题(F604080)

<sourceDocumentId>AX02_APF604_F604080</sourceDocumentId>


我已经尝试过使用这种正则表达式和变体,但是我可以设法获得
F604080。

(?<=\w+_)\w+(?=\<)

(?<=\w+_\w+_)\w+(?=\<)


....

任何帮助将不胜感激。
谢谢。

最佳答案

您不需要回头或向前看,只需使用此简单的正则表达式,

.*_(\w+)


并捕获组1。

Java代码

public static void main(String[] args) {
    String s = "<sourceDocumentId>AX02_APF604_F604080</sourceDocumentId>";
    Pattern p = Pattern.compile(".*_(\\w+)");
    Matcher m = p.matcher(s);

    if (m.find()) {
        System.out.println(m.group(1));
    } else {
        System.out.println("Didn't match");
    }
}


像您想要的那样打印。

F604080

10-08 11:11