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

时间:2009-05-14 01:15:11

标签: java regex

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

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

replaceAll(foofoofoo,“[ab]”);

2 个答案:

答案 0 :(得分:7)

s.replaceAll("(?<!\\[)t(?!\\])", "[ab]");

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

以上一点不包括[t]。我怀疑这是你想要的,但如果没有,你需要稍微修改一下。

答案 1 :(得分:1)

您可以使用负面的lookbehind和lookahead,如下所示:

(?<!\[)t(?!=\])