有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我在字符串上使用replaceAll()将任何字母替换为“[两个字母]”。所以xxxaxxx到xxx[ab]xxx。我不想让那些已经被替换的再次被替换(变成xxx[a[cb]]xxx)

一种简单的方法是排除任何以“[”开头或后跟“]”的字母。正确的正则表达式是什么

replaceAll(fooofoo,“[ab]”)


共 (2) 个答案

  1. # 1 楼答案

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

    它们分别是一个负向后看和一个负向前看,这两个例子是os零宽度断言。更多信息可以在Lookahead and Lookbehind Zero-Width Assertions中找到

    上面所做的一件事就是排除[t]。我想这就是你想要的,但如果不是,你需要稍微修改一下

  2. # 2 楼答案

    你可以使用消极的向后看和向前看,如下所示:

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