2014-01-15 212 views
0

我想将字符串\\d+-\\d+替换为此字符串<!-- This is Siebel Order identified --> <tns:id> <tns:idValue>\\d+-\\d+</tns:idValue中随机指定的数字。替换正则表达式

我使用下面的代码

String REGEXSIEBEL = "<!-- This is Siebel Order identified --> <tns:id> <tns:idValue>\\d+-\\d+</tns:idValue>"; 
java.util.regex.Pattern p1 = java.util.regex.Pattern.compile(REGEXSIEBEL); 
java.util.regex.Matcher m = p1.matcher(INPUT); 

INPUT = m.replaceAll(REGEXSIEBEL.replaceAll(String.valueOf("\\d+-\\d+"), String.valueOf(randomInt))); 

但它不工作。

+1

你可以给一个样品的输入和输出? – nhahtdh

回答

0

可以使用http://regex101.com/验证您的正则表达式快速在线,也许你还可以检查Java的正则表达式本教程以备将来参考:http://www.tutorialspoint.com/java/java_regular_expressions.htm

下面你手边有一个全面实施的任务:

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); 
}