Заменить все символы вне диапазона (строка Java) - PullRequest
26 голосов
/ 02 октября 2010

Как заменить все символы в строке, которые не соответствуют критериям. У меня проблемы именно с оператором НЕ.

В частности, я пытаюсь удалить все символы, которые не являются цифрами, я уже пробовал это:

String number = "703-463-9281";
String number2 = number.replaceAll("[0-9]!", ""); // produces: "703-463-9281" (no change)
String number3 = number.replaceAll("[0-9]", "");  // produces: "--" 
String number4 = number.replaceAll("![0-9]", ""); // produces: "703-463-9281" (no change)
String number6 = number.replaceAll("^[0-9]", ""); // produces: "03-463-9281"

Ответы [ 2 ]

44 голосов
/ 02 октября 2010

Объяснить: ^ в начале класса символов отрицает этот класс, но он должен быть внутри класса, чтобы это работало Этот же символ вне символьного класса является якорем для начала строки / строки.

Вы можете попробовать это вместо:

"[^0-9]"
27 голосов
/ 03 октября 2010

Вот краткое описание определения класса символов и его взаимодействия с некоторыми метасимволами регулярных выражений.

  • [aeiou] - соответствует ровно одной строчной гласной
  • [^aeiou] - соответствует символу, который НЕ строчная гласная ( отрицание класс символов)
  • ^[aeiou] - соответствует строчной гласной, поставленной на якорь в начале строки
  • [^^] - соответствует символу, который не является кареткой / '^'
  • ^[^^] - соответствует символу, который не является кареткой в ​​начале строки
  • ^[^.]. - соответствует чему-либо, кроме буквального периода, за которым следует «любой» символ в начале строки
  • [a-z] - соответствует ровно одному символу в диапазоне от 'a' до 'z' (т.е. все строчные буквы)
  • [az-] - соответствует 'a', 'z' или '-' (буквальная черта)
  • [.*]* - соответствует непрерывной последовательности (возможно, пустой) точек и звездочек
  • [aeiou]{3} - соответствует 3 последовательным строчным гласным буквам (все не обязательно одинаковые гласные)
  • \[aeiou\] - соответствует строке "[aeiou]"

Ссылки * * тысяча пятьдесят-одна регулярные-выражения.info / Класс символов , Якоря , Точка , Повтор Похожие вопросы

...