我有一个像
这样的字符串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
但需要第一个案例的帮助。
答案 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!