首先,这不是家庭作业/学校问题。这是个人项目所需要的,并且能够使用如下简单字符来概括问题:
创建一个正则表达式,可以在java字符串replaceAll函数中用于输入字符串aaabaabaa(或类似的)并将每个a转换为A,除非它前面带有b。所以预期的产量是AAAbaAbaA。我现在已经尝试了至少2个小时......我能想到的最好的是:
replaceAll("^a|([^b])a", "$1A");
这在aaa上失败,返回值为AaA
我试图说“任何'a'没有'b'之前它应该是A.对于RegEx新手的任何想法?非常感谢!
答案 0 :(得分:3)
尝试使用否定的lookbehind:
str.replaceAll("(?<!b)a", "A");
这将匹配任何a
而不是,后面紧跟b
。