Java 使用正则表达式替换字符的select实例

Java 使用正则表达式替换字符的select实例,java,regex,Java,Regex,首先,这不是家庭作业/学校问题。这是我个人项目所需要的东西,我能够用简单的字符概括问题,如下所示: 创建一个正则表达式,该表达式可在java string replaceAll函数中用于输入字符串aaabaa(或类似的字符串),并将每个a转换为a,除非前面有b。因此,预期的输出是aaabaa。我已经试了至少两个小时了。。。我能想到的最好办法是: replaceAll("^a|([^b])a", "$1A"); 这在aaa上失败,返回值为aaa 我想说的是“任何没有“b”的“a”都应该是a。对于

首先,这不是家庭作业/学校问题。这是我个人项目所需要的东西,我能够用简单的字符概括问题,如下所示:

创建一个正则表达式,该表达式可在java string replaceAll函数中用于输入字符串aaabaa(或类似的字符串),并将每个a转换为a,除非前面有b。因此,预期的输出是aaabaa。我已经试了至少两个小时了。。。我能想到的最好办法是:

replaceAll("^a|([^b])a", "$1A");
这在aaa上失败,返回值为aaa


我想说的是“任何没有“b”的“a”都应该是a。对于正则表达式新手来说,有什么想法吗?非常感谢!

尝试使用负面回顾:

str.replaceAll("(?<!b)a", "A");

str.replaceAll((?尝试使用负回溯:

str.replaceAll("(?<!b)a", "A");

str.replaceAll((?尝试使用负回溯:

str.replaceAll("(?<!b)a", "A");

str.replaceAll((?尝试使用负回溯:

str.replaceAll("(?<!b)a", "A");

str.replaceAll(“(?是的,这就是我缺少的功能。我不知道lookaheads或lookbehinds。我与regex合作已经有几年了,我不确定我是否使用过它们!但非常感谢!是的,这就是我缺少的功能。我不知道lookaheads或lookbehinds。我与regex合作已经有几年了,我不知道我不确定我是否使用过这些!但是非常感谢!是的,这是我缺少的功能。我不知道lookaheads或lookbehinds。我和regex一起工作已经有几年了,我不确定我是否使用过这些功能!但是非常感谢!是的,这是我缺少的功能。我不知道lookaheads或lookbehinds。这是一个很好的例子我和regex一起工作了几年,我不确定我是否用过这些!但是非常感谢!