我有一 strip 有正文的 Outlook 邮件。我需要获取特定模式的字符串 S15345,S15366 等。
我怎样才能在java中实现这个?
我尝试像下面这样给予,
String array[] = body.split("[S[0-9]]");
最佳答案
在这种情况下,更好的方法是将模式匹配器与此正则表达式 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());
关于Java正则表达式和模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50892347/