Java正则表达式和模式

标签 java regex

我有一 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/

相关文章:

Java 8 Lambda - 过滤两个 ArrayList

java - CDI 和 JNDI 服务有什么关系?

java - 连接表与元数据的 Hibernate 映射

php - "empty"模式代表什么?

javascript - 我可以从 sqlite 查询字符串中获取表名吗?

javascript - 如何制作正确的 Javascript 正则表达式?

Java 脚本 API 无法按名称检索引擎

java replaceAll 不适用于\n 字符

regex - IIS7 URL重写模块替换

regex - 无法将两个正则表达式合并为一个以生成在 VSCode 中使用的代码片段