在Java中试图找到一个正则表达式,该表达式将匹配除第一个实例之外的特定字符(:)的所有实例,想要替换除第一个之外的所有实例。
我可以这样做,
Pattern p = Pattern.compile(":");
Matcher m = p.matcher(input);
String output = m.replaceAll("");
并且还有m.replaceFirst()但我想先替换所有内容。
答案 0 :(得分:4)
天真的方法:
String[] parts = str.split(":", 2);
str = parts[0] + ":" + parts[1].replaceAll(":", "");
答案 1 :(得分:1)
对于正则表达式替换使用匹配模式\G((?!^).*?|[^:]*:.*?):
并替换使用第一组$1
在Perl here中查看并测试正则表达式代码。
答案 2 :(得分:0)
您可以使用reg ex
String str1 = "A:B:C:D:E:F:G:H:I:J:K:L:M";
str1= str1.replaceAll("([:|_].*?):", "$1_");
str1= str1.replaceAll("([:|_].*?):", "$1_");
这里我不能修改正则表达式以使输出首先替换自己。实际上,首先替换所有在替换位置用'_'替换':'。
答案 3 :(得分:0)
public static void main(String[] args) {
String name ="1_2_3_4_5";
int index = name.indexOf("_");
String name1 = name.substring(index+1);
name1 = name1.replace("_", "#");
System.out.println(name.substring(0,index+1)+ name1);
}
答案 4 :(得分:0)
if (matcher.find()) {
String start = originalString.substring(0, matcher.end());
matcher.reset(originalString.substring(matcher.end(), originalString.length()));
replacedString = start + matcher.replaceAll("");
}