所以你想替换
$
只在类名上签名?我肯定会使用索引和
StringBuilder
班级:
private static final String testString = "File '/oname=$INSTDIR\\workspace\\jetty\\work\\webapp\\WEB-INF\\classes\\com\\sample\\service\\core\\util\\SomeModule$SomeModulesData$SomeModulesDataBuilder.class' \t'${ADDEDSOURCE}workspace\\jetty\\work\\webapp\\WEB-INF\\classes\\com\\sample\\service\\core\\util\\SomeModule$SomeModulesData$SomeModulesDataBuilder.class' \t; Added file";
public static void main(String[] args) {
System.out.println(replaceDollars(testString));
}
private static final Pattern PATH = Pattern.compile("(\\'[\\S]*)(\\\\[\\w$]+\\.class\\')");
public static String replaceDollars(String string) {
Matcher m = PATH.matcher(string);
StringBuilder builder = new StringBuilder();
int end = 0;
while (m.find()) {
builder
.append(string, end, m.start())
.append(m.group(1))
.append(m.group(2).replace("$", "$$"));
end = m.end();
}
builder.append(string, end, string.length());
return builder.toString();
}
使用以下正则表达式:
(\'[\S]*)(\\[\w$]+\.class\')
在输入字符串中查找文件。