Java字符串替换'&';与&;amp;但不是&;amp;至&;amp;amp;

Java字符串替换'&';与&;amp;但不是&;amp;至&;amp;amp;,java,regex,string,replace,ampersand,Java,Regex,String,Replace,Ampersand,我有一个大字符串,其中使用了以下模式中可用的字符(&C)- A&B A & B A& B A &B A&B A & B A& B A &B 我想将所有出现的&character替换为& 在替换此文件时,我还需要确保不会错误地转换&至&;amp。我该如何以精通性能的方式做到这一点?我使用正则表达式吗?如果是,请您帮助我选择正确的正则表达式来执行上述操作 到目前为止,我一直在尝试追随,

我有一个大字符串,其中使用了以下模式中可用的字符(&C)-

A&B
A & B
A& B
A &B
A&B
A & B
A& B
A &B
我想将所有出现的&character替换为
&
在替换此文件时,我还需要确保不会错误地转换
&
&;amp。我该如何以精通性能的方式做到这一点?我使用正则表达式吗?如果是,请您帮助我选择正确的正则表达式来执行上述操作

到目前为止,我一直在尝试追随,但毫无乐趣:

data = data.replace(" & ", "&"); // doesn't replace all &
data = data.replace("&", "&");   // replaces all &, so & becomes &

可以使用具有负前瞻性的正则表达式

正则表达式字符串应该是
&(!amp;)

使用
replaceAll
,您将获得:

A&B
A & B
A& B
A &B
A&B
A & B
A& B
A &B
因此,单个字符串
str
的代码为:

str.replaceAll("&(?!amp;)", "&");

您可以试试这个,它应该可以工作:

data = data.replaceAll("&","&").replaceAll("&","&");

这样您就可以首先替换所有
&
&
一起使用,因此您所拥有的就是
&
,然后,您将所有这些代码替换为
&

您可以更改所有的
&更改为
&
,然后将所有
&
更改为
&
。例如,您是否有其他转义字符,如
?您可以使用
&(?[a-z]{1,6};)
,以便
&bull不会变成
&;公牛