我有一个要求,我得到一个字符串,我必须在其中替换
之间的值< 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
我们怎么做?
答案 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>
XXXX/XXXXX
&LT; < / XXXX:Credential>.........
然后只需添加一个简单的替换文字,该文字使用反向引用$1
和$3
来保留所需匹配项左右两侧的字符。