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