java - 如何获取下划线之间的数字?

标签 java regex string

如果我有一个具有以下字符序列的键:_(some number)_1。我怎样才能返回 (some number)

例如,如果键是 _6654_1,我只需要值 6654。真正让我感到困惑的问题是数字可以是任意长度,例如 _9332123425234_1,在这种情况下,我只需要 9332123425234

这是我到目前为止尝试过的:

Pattern p = Pattern.compile("_[\\d]_1");
Matcher match = p.matcher(request.getParameter("course_id"));

但这不会涵盖中间数字可以是任何数字(不仅仅是四位数字)的情况吗?

最佳答案

您可以只计算出 indexOf('_') 然后使用 substring。不需要正则表达式。

...但是由于您要求的是正则表达式,所以您可以:

import java.util.regex.*;

class Test {
    public static void main(String[] args) {
        String str = "_6654_1";

        Pattern p = Pattern.compile("_(\\d+)_1");
        Matcher m = p.matcher(str);
        if (m.matches())
            System.out.println(m.group(1));  // prints 6654
    }
}

(这里是用于比较的substring方法:)

String str = "_6654_1";
String num = str.substring(1, str.indexOf('_', 1));
System.out.println(num);                     // prints 6654

最后的解决方案是使用简单的 split("_"):

String str = "_6654_1";
System.out.println(str.split("_")[1]);   // prints.... you guessed it: 6654

关于java - 如何获取下划线之间的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407785/

相关文章:

java - Hibernate Validator iterator.hasNext() 不起作用

java - 如何交换两点的坐标?

python - 如何找出当前系统首选语言是什么

C++ 字符串和重载运算符

java - 获取随机列作为字符串列表

java - 通过 rest-engine 启动时从 Camunda 进程返回数据

java - Tomcat 应用程序未启动

javascript - 正则表达式的灾难性回溯问题

JavaScript 正则表达式将日期/时间解析为毫秒

regex - 增加字符串perl中所有数字的出现