Java Regex:替换A和Z之间的任何B

时间:2015-03-01 09:26:51

标签: java regex

假设此输入字符串:

A-B-C-B-Z

我试图替换BA 之间的任何Z

以下正则表达式仅匹配最后一次出现的B

(.*A.*)B(.*Z.*)

...用[{1}}替换(Pattern.replaceAll())时结果为

$1-$2

预期结果将是

A-B-C---Z

代替。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

在Java中,你可以使用这样的外观:

String str = "F-B-P-B-A-B-C-B-Z-D-B-A-B-C-B-Z-C";
String repl = str.replaceAll("(?<=A.{0,999})B(?=((?!A|Z).)*Z)", "-");
//=> F-B-P-B-A---C---Z-D-B-A---C---Z-C

根据您的评论,您可以使用此正则表达式:

String repl = str.replaceAll(
  "(?<=<!\\[CDATA\\[.{0,999})&amp;(?=((?!<!\\[CDATA\\[|\\]\\]>).)*\\]\\]>)", "-");

请注意,假设您的输入长度达到999。