【发布时间】:2017-10-12 19:42:30
【问题描述】:
我想检查一个字符串以查看它是否包含 $wildcard$,并且仅当它包含时,我才想提取“$ $”之间的值,我将使用它来检索替换。然后替换完整的新字符串(同时删除 $ $)
编辑:设法让这个工作demo
String subject = "test/$name$/something";
String replace = "foo_bar";
Pattern regex = Pattern.compile("(\\$).*?(\\$)");
Matcher m = regex.matcher(subject);
StringBuffer b= new StringBuffer();
while (m.find()) {
String something = m.group(0);
System.out.println(something);
m.appendReplacement(b, replace);
}
m.appendTail(b);
String replaced = b.toString();
System.out.println(replaced);
给我输出
$name$
test/foo_bar/something
我可以使用子字符串来删除前导/尾随 $ 但有没有办法将它们分成组,这样我就可以得到 $ $ 之间的内容。但还要确保初始检查确保它有一个开始和结束 $
【问题讨论】:
-
你为什么一直尝试?
-
subject_final = subject.replaceAll("\\$[^$]+\\$", replace); -
这里的东西可能会回答你的问题:docs.oracle.com/javase/tutorial/essential/regex