Существует ли (!) Оператор в регулярном выражении?
Мне нужно удалить все символы из данной строки, за исключением нескольких, которые должны были оставить. Как это сделать с регулярным выражением?
Простой тест: символы [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]"
Это будет соответствовать любому символу, кроме ab или c.
Ответ 3
Здесь существует отрицательный класс символов, который может работать для этого экземпляра. Вы определяете его, помещая ^ в начало класса, например:
[^1a\*]
для вашего конкретного случая.
Ответ 4
В классе символов не существует. Так
[^1a\*] будет соответствовать всем символам, кроме тех.
Ответ 5
Вы хотите сопоставить все символы, кроме: [asdf123 *], используйте ^
Ответ 6
Там нет оператора "нет" в регулярных выражениях Java, например, в Perl.