我正在尝试为格式为[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
答案 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();
}