java - 使用正则表达式模式获取两个表达式之间的所有子字符串(JAVA)

标签 java regex string arraylist

我有以下字符串(str):

 String  str="${name}/${family}/${child}/${fname}"

我在java中使用什么正则表达式模式来获取“${”和“}”之间的所有子字符串并将它们保存在数组列表中, 所以结果将是一个包含以下值的数组列表:“name”,“family”,“child”,“fname”

最佳答案

您可以使用 "\\$\\{(\\w+)\\}" 编译Pattern,然后循环到构建一个列表,例如,

String str = "${name}/${family}/${child}/${fname}";
Pattern pat = Pattern.compile("\\$\\{(\\w+)\\}");
Matcher mat = pat.matcher(str);
List<String> al = new ArrayList<>();
while (mat.find()) {
    al.add(mat.group(1));
}
System.out.println(al);

,就像我在评论中所说,只需一行

System.out.println(Arrays.asList(str.replaceAll("[\\$\\{\\}]‌​", "").split("/")));

关于java - 使用正则表达式模式获取两个表达式之间的所有子字符串(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41949595/

相关文章:

java - 观察者运行时 textView 不更新

javascript - JDK 8 Nashorn Javascript 引擎限制

java - 重写 .equals() 方法(== 在比较字符串时返回 true)!

python - 我如何在 python lxml、XPath 中使用正则表达式

c# - 从字符串中删除下划线,除了字符串中的链接

c++ - std::string 的对象真的可以 move 吗?

c - 我想从包含段落、拆分单词的文件中读取文本,然后分配给数组

java - 日期时区转换

java - 使用正则表达式验证美国电话号码格式

c# - 使用 RegularExpressionAttribute 时客户端验证不起作用