【发布时间】:2021-09-23 00:54:57
【问题描述】:
我有一个字符串如下:
@AB{id} in (select @AC{id} from @AC{table} where @AC{name}='Kavita')
我需要获取花括号内的所有属性,即 id、表、名称等。
谁能建议如何做到这一点?谢谢..
【问题讨论】:
标签: java spring java-stream
我有一个字符串如下:
@AB{id} in (select @AC{id} from @AC{table} where @AC{name}='Kavita')
我需要获取花括号内的所有属性,即 id、表、名称等。
谁能建议如何做到这一点?谢谢..
【问题讨论】:
标签: java spring java-stream
您应该使用这样的正则表达式:\{(\w+)\} 来检测大括号之间的字母/数字/下划线的非空序列,或者 \{([A-Za-z]+)\} 如果属性包含仅英文字母.
那么从Java 9开始,类Matcher有一个方法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]
【讨论】: