我有以下格式的字符串:
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/