根据另一个字符串从字符串中提取数字

时间:2019-02-07 08:33:51

标签: java

我正在尝试为格式为[digit] [to] [digit]的字符串编写正则表达式。 1到5,如果我想从给定的字符串中找到“ to”一词,我想在此之前和之后提取数字,那么我已经尝试过了,但是它不起作用。

Pattern p = Pattern.compile("([0-9]+)\\bto\\b([0-9]+)");
        Matcher m = p.matcher("1 to 5");
        m.find();
        System.out.println(m.group(0));
        System.out.println(m.group(1));
        System.out.println(m.group(2));

预期o / p

1
to
5

2 个答案:

答案 0 :(得分:3)

考虑为to部分添加一个组。

对于空格,您还希望\\s而不是\\b

Pattern p = Pattern.compile("([0-9]+)\\s(to)\\s([0-9]+)");
Matcher m = p.matcher("1 to 5");
m.find();
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));

如评论中所述:

  

“零组代表整个模式”

答案 1 :(得分:0)

是否必须使用正则表达式。如果没有,则可以使用String函数。

      String s="23 to 34";
      String toString="to";
      if(s.contains(toString)){
          int startIndex=s.indexOf(toString);
          int endIndex=startIndex+(toString).length();
          String s1=s.substring(0, startIndex); //get the first number
          String s2=s.substring(endIndex);  //get the second number
          System.out.println(s1.trim()); // Removing any whitespaces
          System.out.println(toString);
          System.out.println(s2.trim();
      }