Java正则表达式和模式

时间:2018-06-16 22:46:57

标签: java regex

我的身体有一条前景信息。我需要获得某些模式的字符串 S15345,S15366 等。

我如何在java中实现这一目标?

我尝试过如下,

 String array[] = body.split("[S[0-9]]");

1 个答案:

答案 0 :(得分:3)

在这种情况下,更好的方法是将模式匹配器与此正则表达式S\d{5}一起使用,或者如果模式可以包含一个或多个数字,则可以使用S\d+代替

String body = ...
Pattern pattern = Pattern.compile("S\\d{5}");
Matcher matcher = pattern.matcher(body);
List<String> result = new ArrayList<>();
while (matcher.find()){
    result.add(matcher.find());
}

如果您使用的是Java 9+,则可以使用:

String body = ...
List<String> result = Pattern.compile("S\\d{5}")
        .matcher(body)
        .results()
        .map(MatchResult::group)
        .collect(Collectors.toList());