Java正则表达式匹配"t",除非它是"[t"或"t]"

cks*_*ubs 4 java regex

我在字符串上使用replaceAll()来替换任何带有"[two letters]"的字母.所以xxxaxxx到xxx [ab] xxx.我不希望已经被替换的那些再次完成(转到xxx [a [cb]] xxx)...

一种简单的方法是排除任何由"["或后跟"]"所引用的字母.什么是正确的正则表达式使用?

replaceAll(foofoofoo,"[ab]");

cle*_*tus 7

s.replaceAll("(?<!\\[)t(?!\\])", "[ab]");
Run Code Online (Sandbox Code Playgroud)

这些分别是负面的后观和负面的前瞻,两个例子是零宽度断言.更多信息可以在Lookahead和Lookbehind Zero-Width断言中找到.

上面做的一件事不包括[t].我怀疑这是你想要的,但如果没有,你需要稍微修改一下.