Существует ли (!) Оператор в регулярном выражении?

Мне нужно удалить все символы из данной строки, за исключением нескольких, которые должны были оставить. Как это сделать с регулярным выражением?

Простой тест: символы [1, a, *] не должны удаляться, все остальные должны иметь строку "asdf123 **".

Ответ 1

В наборе есть: ^.

Вы должны иметь возможность сделать что-то вроде:

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**
    }
}

Ответ 2

При использовании внутри [ и ] ^ (caret) используется оператор not.

Он используется следующим образом:

"[^abc]"

Это будет соответствовать любому символу, кроме a b или c.

Ответ 3

Здесь существует отрицательный класс символов, который может работать для этого экземпляра. Вы определяете его, помещая ^ в начало класса, например:

[^1a\*]

для вашего конкретного случая.

Ответ 4

В классе символов не существует. Так

[^1a\*] будет соответствовать всем символам, кроме тех.

Ответ 5

Вы хотите сопоставить все символы, кроме: [asdf123 *], используйте ^

Ответ 6

Там нет оператора "нет" в регулярных выражениях Java, например, в Perl.