Java子字符串在字符串之后和下一个空格之前获取值

时间:2017-01-17 21:46:19

标签: java substring

我有一个像

这样的字符串
  

231 AVE BLDG 2 UNIT 234'

我需要在select date_t, some_inbuilt_function_get_total_no_of_days_in_month(date_t) 之后和下一个空格之前做一个子字符串。即BLDG

另一个例子是:

  

231 AVE BLDG 2'

此处子字符串必须在2之后选择值,直到字符串结束。即BLDG

对于第二种情况,我编写了如下逻辑:

2

但需要第一个案例的帮助。

2 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

 (?:BLDG\s)(\w*)(?:\s\S)?

为两种情况捕获2

使用:

String patternString = "(?:BLDG\\s)(\\w*)(?:\\s\\S)?";

Pattern pattern = Pattern.compile(patternString);
Matcher matcher = patter.matcher(address);

if(matcher.find())
    String substring = matcher.group(1);

答案 1 :(得分:1)

对于你的第一个案例你可以使用像这样的正则表达式:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

class Main {
  public static void main(String[] args) {
    String str = "231 AVE BLDG 2 UNIT 234";
    Pattern pattern = Pattern.compile("BLDG (.*?) ");
    Matcher matcher = pattern.matcher(str);
    while (matcher.find()) {
        System.out.println(matcher.group(1)); //2
    }
  }
}

试试here!