使用正则表达式替换字符的选定实例

时间:2014-01-31 23:11:53

标签: java regex

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

创建一个正则表达式,可以在java字符串replaceAll函数中用于输入字符串aaabaabaa(或类似的)并将每个a转换为A,除非它前面带有b。所以预期的产量是AAAbaAbaA。我现在已经尝试了至少2个小时......我能想到的最好的是:

replaceAll("^a|([^b])a", "$1A");

这在aaa上失败,返回值为AaA

我试图说“任何'a'没有'b'之前它应该是A.对于RegEx新手的任何想法?非常感谢!

1 个答案:

答案 0 :(得分:3)

尝试使用否定的lookbehind:

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

这将匹配任何a 而不是,后面紧跟b