我在字符串上使用replaceAll()来替换任何带有“[two letters]”的字母。所以xxxaxxx到xxx [ab] xxx。我不希望已经被替换的那些再次完成(转到xxx [a [cb]] xxx)......
一种简单的方法是排除由“[”或后跟“]”引出的任何字母。什么是正确的正则表达式使用?
replaceAll(foofoofoo,“[ab]”);
答案 0 :(得分:7)
s.replaceAll("(?<!\\[)t(?!\\])", "[ab]");
这些分别是负面的后观和负面的前瞻,两个例子是零宽度断言。更多信息可以在Lookahead and Lookbehind Zero-Width Assertions找到。
以上一点不包括[t]。我怀疑这是你想要的,但如果没有,你需要稍微修改一下。
答案 1 :(得分:1)
您可以使用负面的lookbehind和lookahead,如下所示:
(?<!\[)t(?!=\])