正则表达式获得最后的价值

时间:2019-12-24 15:43:49

标签: java regex

根据以下值

[AAMP-PLAYER]aamp pos: [14..187..202..2196879032]

我想获取最后一个号码2196879032

有时值将为-1 [AAMP-PLAYER]aamp pos: [14..187..202..-1]

我如何使用正则表达式方法提取最后一位数字而不是拆分方法

4 个答案:

答案 0 :(得分:2)

您可以将字符串末尾的最后一个(可能为负数)匹配,就在结束]之前:

(\-?\d+)\]$

答案 1 :(得分:0)

如果没有跟其他任何数字跟随(紧随其后,而不是立即跟随),则该数字为最后一个数字。

 (\-?\d+)(?!.*\d)

答案 2 :(得分:0)

我们可以在此处尝试使用String#replaceAll选项:

String input = "[AAMP-PLAYER]aamp pos: [14..187..202..2196879032]";
String num = input.replaceAll("^.*\\.\\.(-?\\d+).*$", "$1");
System.out.println(num);

此打印:

2196879032

答案 3 :(得分:0)

如果不使用RegExsplit,则可以使用str.substring(str.lastIndexOf("..") + 2, str.length() - 1)进行操作,其中str具有您的String值,例如

public class Main {

    public static void main(String[] args) {
        String str = "[AAMP-PLAYER]aamp pos: [14..187..202..2196879032]";
        System.out.println(str.substring(str.lastIndexOf("..") + 2, str.length() - 1));

        str = "[AAMP-PLAYER]aamp pos: [14..187..202..-1]";
        System.out.println(str.substring(str.lastIndexOf("..") + 2, str.length() - 1));
    }
}

输出:

2196879032
-1