我正在努力让这个工作正常。
我的正则表达式模式为:".*(${.*}).*"
还有一个字符串变量myVar = "name = '${userName}'/pass = '${password}'"
我有一个存储值的 HashMap ,在本例中,“${userName}”的值为“John Doe”,“${password}”的值为“secretpwd”。
如何循环 myVar 中找到的所有匹配项(在本例中为“用户名”和“密码”)? 然后我可以循环找到的每个匹配项并从 HashMap 中请求它们对应的值。
谢谢!
最佳答案
您可以使用例如以下代码:
Pattern p = Pattern.compile("\\$\\{.*?\\}");
while (true) {
Matcher m = p.matcher(myVar);
if (!m.find()) {
break;
}
String variable = m.group();
String rep = hash.get(variable);
myVar = m.replaceFirst(rep);
}
请注意,我调整了正则表达式以满足您的要求。
关于Java:从一个字符串值替换多个字符串模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7293465/