如何在 stream() api 中获取 id、name 和 table

how to get id, name and table in stream() api

我有如下字符串:

@AB{id} in (select @AC{id} from @AC{table} where @AC{name}='Kavita')

我需要获取花括号内的所有属性,即 id、table、名称等

有人可以建议怎么做吗?谢谢..

您应该使用这样的正则表达式:\{(\w+)\} 检测花括号之间 letters/digits/underscores 的非空序列,或者 \{([A-Za-z]+)\} 如果属性包含 只有个英文字母。

然后从Java9开始,classMatcher有一个方法results返回Stream<MatchResult>并且属性可以从group(1) 提到的正则表达式:

Pattern pat = Pattern.compile("\{(\w+)\}");
        
String code = "@AB{id} in (select @AC{id} from @AC{table} where @AC{name}='Kavita')";
        
List<String> parts = pat.matcher(code)
                        .results().map(mr -> mr.group(1))
                        .collect(Collectors.toList());
System.out.println(parts);

输出:

[id, id, table, name]