Java 替换正则表达式字符

Java 替换正则表达式字符,java,regex,substring,Java,Regex,Substring,我想将子字符串\\d+-\\d+替换为该字符串中的随机数\\d+-\\d+您可以使用快速联机验证您的正则表达式,也可以查看java正则表达式的本教程以获取进一步参考: 下面是您手头任务的完整实施: String str = "<!-- This is Siebel Order identified --> <tns:id> <tns:idValue>84678468-00</tns:idValue>"; String patternString =

我想将子字符串\\d+-\\d+替换为该字符串中的随机数\\d+-\\d+您可以使用快速联机验证您的正则表达式,也可以查看java正则表达式的本教程以获取进一步参考:

下面是您手头任务的完整实施:

String str = "<!-- This is Siebel Order identified --> <tns:id> <tns:idValue>84678468-00</tns:idValue>";
String patternString = "<!-- This is Siebel Order identified --> <tns:id> <tns:idValue>\\d{8}-00<\\/tns:idValue>";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);

StringBuffer sb = new StringBuffer();

while(matcher.find()){
   String randomNumberTag = "<!-- This is Siebel Order identified --> <tns:id> <tns:idValue>"+
        Integer.toString((int)(Math.random() * 99999999))
        +"-00</tns:idValue>";
   matcher.appendReplacement(sb,randomNumberTag);
}
matcher.appendTail(sb);
更新 前面的代码旨在用不同的随机数替换每个事件,如果要用相同的随机数替换所有事件,请使用以下代码:

String str = "<!-- This is Siebel Order identified --> <tns:id> <tns:idValue>84678468-00</tns:idValue>";
String patternString = "<!-- This is Siebel Order identified --> <tns:id> <tns:idValue>\\d{8}-00<\\/tns:idValue>";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);

String randomNumberTag = "<!-- This is Siebel Order identified --> <tns:id> <tns:idValue>"+
    Integer.toString((int)(Math.random() * 99999999))
            +"-00</tns:idValue>";
System.out.println(randomNumberTag);
if(matcher.find()){
    str = matcher.replaceAll(randomNumberTag);
}
你需要使用


你能给出一个输入和输出的例子吗?
String str = "<!-- This is Siebel Order identified --> <tns:id> <tns:idValue>84678468-00</tns:idValue>";
String patternString = "<!-- This is Siebel Order identified --> <tns:id> <tns:idValue>\\d{8}-00<\\/tns:idValue>";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);

String randomNumberTag = "<!-- This is Siebel Order identified --> <tns:id> <tns:idValue>"+
    Integer.toString((int)(Math.random() * 99999999))
            +"-00</tns:idValue>";
System.out.println(randomNumberTag);
if(matcher.find()){
    str = matcher.replaceAll(randomNumberTag);
}
Pattern p1 = Pattern.compile("\\d+-\\d+");
Matcher m = p1.matcher(INPUT);
INPUT = m.replaceAll( String.valueOf(randomInt) );