正则表达式以相反的顺序提取文本,直到字符的第3个实例

dRv*_*dRv 6 java regex

我有格式的字符串 XXXX_YYYY_YYYYYYY_YYYYYYZZZZ

如何从后向提取字符串,直到_击中thrid (下划线).提取值:YYYY_YYYYYYY_YYYYYYZZZZ

我试过这个((?:_[^_]*){3})$,它似乎_在开始时使用额外的,我可以用Java删除它.

有什么方法可以让我_在开始时得到它.

sp0*_*00m 5

这个应该适合您的需求:

[^_]+(?:_[^_]+){2}$
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示


Jan*_*Jan 3

像这样:

        String line = "XXXX_YYYY_YYYYYYY_YYYYYYZZZZ";

        Pattern p = Pattern.compile("([^_]+(?:_[^_]*){2})$");
        Matcher m = p.matcher(line);
        if(m.find()) {
            System.out.println(m.group(1));
        }
Run Code Online (Sandbox Code Playgroud)

只需将“三次”{3} 拆分为一个不带 _ 的实例和两个需要它的实例。