[英]I need a regular expression to replace 3rd matching substring
例
input: abc def abc abc pqr
我想用xyz替换第三位置的abc。
output: abc gef abc xyz pqr
提前致谢
一种方法是使用。
String[] mySplitStrings = null;
String.Split(" ");
mySplitString[3] = "xyz";
然后重新加入字符串,这不是最好的方法,但是可以工作,您可以将整个过程放入类似的函数中。
string ReplaceStringInstance(Seperator, Replacement)
{
// Do Stuff
}
将三个部分分组,分别是替换字符串,替换字符串和其余部分之前的部分,并组合前缀,替换和后缀:
String pattern = String.format("^(.*?%1$s.*?%1$s.*?)(%1$s)(.*)$", "abc");
String result = input.replaceAll(pattern, "$1xyz$3");
该解决方案假定整个输入为一行。 如果您有多行输入,则必须替换点,因为它们与行分隔符不匹配。
有很多方法可以做到这一点,但这是其中一种。 它假定字母组将由空格分隔,并寻找第三个“ abc”块。 然后,它将执行一次替换,以将其替换为“ xyz”。
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class main {
private static String INPUT = "abc def abc abc pqr";
private static String REGEX = "((?:abc\\ ).*?(?:abc\\ ).*?)(abc\\ )";
private static String REPLACE = "$1xyz ";
public static void main(String[] args) {
System.out.println("Input: " + INPUT);
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT); // get a matcher object
INPUT = m.replaceFirst(REPLACE);
System.out.println("Output: " + INPUT);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.