比如说我有一个带有命名捕获组的以下字符串:
/this/(?<capture1>.*)/a/string/(?<capture2>.*)
我想用像&#34; foo&#34;这样的值替换捕获组。所以我最终得到一个看起来像的字符串:
/this/foo/a/string/bar
限制是:
答案 0 :(得分:0)
您可以找到开始和结束索引
public static String getnewString(String text,String reg){
StringBuffer result = new StringBuffer(text);
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
int startindex= matcher.start();
int stopindex=matcher.end();
System.out.println(startindex+" "+stopindex);
result.delete(startindex, stopindex);
result.insert(startindex, "foo");
}
return result.toString();
}
全面实施:
where
答案 1 :(得分:0)
试试这个,
int lastIndex = s.lastIndexOf("/");
String newString = s.substring(0, lastIndex+1).concat("newString");
System.out.println(newString);
获取subString直到最后&#39; /&#39;然后像上面的
一样将新字符串添加到子字符串中答案 2 :(得分:0)
我明白了:
String string = "/this/(?<capture1>.*)/a/string/(?<capture2>.*)";
Pattern pattern = Pattern.compile(string);
Matcher matcher = pattern.matches(string);
string.replace(matcher.group("capture1"), "value 1");
string.replace(matcher.group("capture2"), "value 2");
疯狂,但有效。