正则表达式中是否有(!)运算符?

时间:2010-10-05 17:48:04

标签: java regex

我需要删除给定字符串中的所有字符,除了应该留下的几个字符。如何用regexp做到这一点?

简单测试:不应删除字符[1,a,*],所有其他字符应来自字符串“asdf123 **”。

6 个答案:

答案 0 :(得分:22)

在集合中有^。

您应该可以执行以下操作:

text = text.replaceAll("[^1a*]", "");

完整样本:

public class Test
{
    public static void main(String[] args)
    {
        String input = "asdf123**";
        String output = input.replaceAll("[^1a*]", "");
        System.out.println(output); // Prints a1**
    }
}

答案 1 :(得分:9)

[]内使用时,^(插入符号)是not运算符。

它的用法如下:

"[^abc]"

除了a bc之外,它将匹配任何字符。

答案 2 :(得分:1)

有一个否定的character class,可能适用于此实例。您可以通过将^放在类的开头来定义一个,例如:

[^1a\*]

针对您的具体案例。

答案 3 :(得分:0)

在字符类中,^不是。所以

[^1a\*]将匹配除此之外的所有字符。

答案 4 :(得分:0)

您希望匹配除[asdf123 *]以外的所有字符,请使用^

答案 5 :(得分:0)

在Java正则表达式中没有像Perl中那样的“not”运算符。