如何替换字符串的两个子字符串中的文本?

时间:2014-01-08 05:09:31

标签: java regex string

我有一个要求,我得到一个字符串,我必须在其中替换

之间的值
< p811:Credential> and   < /p811:Credential>

在这种情况下AAAAA / BBBBBB

只有Credential文本在前缀不必相同的情况下才会保持不变

示例字符串

1。abc < p811:Credential>AAAAA/BBBBBB< /p811:Credential>xyz
2。gsd< K999:Credential>EEEEE/XXXXX< / K999:Credential>tre

我们怎么做?

2 个答案:

答案 0 :(得分:2)

要解决您的具体问题,您可以提供以下代码:

line=" gsd< K999:Credential>EEEEE/XXXXX< / K999:Credential>tre";
String REGEX="(?<=Credential\\W?>)(\\w|\\d|/)*(?=<\\W?/\\W?(\\w|\\d)+:Credential\\W?>)";

line = line.replaceAll(REGEX, word_to_replace);
System.out.println(line);

答案 1 :(得分:0)

String search = "abc < p811:Credential>AAAAA/BBBBBB< /p811:Credential>xyz";

String regex = "(^.*?< ?[a-zA-Z0-9]{4}:Credential>)(.*?)(< ?/ ?[a-zA-Z0-9]{4}:Credential>.*?$)";
String replacement = "$1Replacement Text$3";

String result = search.replaceAll(regex, replacement);

我在正则表达式中放了3个捕获组:

  • .........< XXXX:Credential>
  • &GT; XXXX/XXXXX&LT;
  • < / XXXX:Credential>.........

然后只需添加一个简单的替换文字,该文字使用反向引用$1$3来保留所需匹配项左右两侧的字符。