Java 正则表达式模式匹配器

标签 java regex pattern-matching

我有以下格式的字符串:

String name = "A|DescA+B|DescB+C|DescC+...X|DescX+"

所以重复的模式是?|?+,不知道会有多少个。我要提取的部分是 |...

[A, B, C, ... X]

我尝试了以下模式:

(.+)\\|.*\\+

但这并不像我想要的那样工作?有什么建议吗?

最佳答案

要将其转换为列表,您可以这样做:

String name = "A|DescA+B|DescB+C|DescC+X|DescX+";
Matcher m = Pattern.compile("([^|]+)\\|.*?\\+").matcher(name);
List<String> matches = new ArrayList<String>();
while (m.find()) {
    matches.add(m.group(1));
}

这为您提供了列表:

[A, B, C, X]

请注意中间的 ?,它可以防止正则表达式的第二部分消耗整个字符串,因为它使 * 懒惰 而不是贪婪

关于Java 正则表达式模式匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11598894/

相关文章:

java - 如何配置 Eclipse 以显示断言错误?

java - 以 UTC 格式保存 CET 日期

java - 为什么要先写入磁盘才能将文件上传到AWS?

javascript - 为什么这个正则表达式不起作用?

java - 在文本文件上使用 setter/getter

regex - 如何让 Spark session 递归读取所有文件?

java - 使用 Java 替换一组重复的 xml 标签

java - 用实际值替换环境变量占位符?

java - Scala RegEx 字符串提取器的行为不一致

regex - Python正则表达式从字符串中提取电话号码