【发布时间】:2023-04-01 18:07:01
【问题描述】:
我有以下字符串(str):
String str="${name}/${family}/${child}/${fname}"
我在 java 中使用什么正则表达式模式来获取 "${" 和 "}" 之间的所有子字符串并将它们保存在 arraylist 中, 所以结果将是一个具有以下值的数组列表:“name”、“family”、“child”、“fname”
【问题讨论】:
-
正则表达式匹配器不会返回这样的数组。您也许可以想出一个可以与
split()一起使用的复杂正则表达式,但这并不值得。编写一个正则表达式来查找 one 子字符串,然后在循环中使用find()方法并构建一个ArrayList。简单、易读、不易出错。 -
@ajb 我认为意图是循环。我不明白你为什么会以其他方式推断。
-
System.out.println(Arrays.asList(str.replaceAll("[\\$\\{\\}]", "").split("/"))); -
@ElliottFrisch 嘿,这是作弊! :)
-
使用这个正则表达式:
"\\$\\{(.*?)\\}"。查看docs.oracle.com/javase/tutorial/essential/regex/matcher.html 以了解如何在循环中使用匹配器。您可以使用matcher.group(1)检索“捕获组”,这将是{和}之间的字符。
标签: java regex string arraylist